Используя ES2017, вы должны иметь это как объявление функции
async function foo() {
var response = await $.ajax({url: '...'})
return response;
}
и выполнить его следующим образом.
(async function() {
try {
var result = await foo()
console.log(result)
} catch (e) {}
})()
Или синтаксис Promise
foo().then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
Я думаю, что это сообщение ( Как применить кеш предпродажного кода CORS ко всему домену ) в значительной степени говорит обо всем этом - вы не можете сделать этого
простым решением является добавление обратного прокси-сервера к прокси-серверу, обслуживающему ваше угловое приложение (например, nginx) для маршрутизации вызовов RESTful через один и тот же домен, например appdomain.com/api -> apidomain.com.
Другое решение, которое, похоже, работает нормально для меня. Вместо того, чтобы настраивать прокси-сервер и нужно перенаправить его в тот же домен, можно вернуть запрос предварительной проверки непосредственно из nginx и, следовательно, сократить время, требуемое запросом предварительной проверки, до нескольких миллисекунд.
Вот простой фрагмент, который можно использовать с nginx.
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
}
Как только запрос предварительной проверки будет успешным, тогда можно просто добавить «Access-Control-Allow-Origin» и другие необходимые вещи к запросам «GET», «POST» и т. д. ...