Как выполнить редирект который приходит со стороннего апи?
С сайта "http://localhost" отправляется POST запрос на "http://localhost:3000/api/test", который возвращает редирект (302) на другой сайт, но в консоль браузера вылетает:
Access to XMLHttpRequest at 'http://google.com/' (redirected from 'http://localhost:3000/api/test') from origin 'http://localhost' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Запрос, который возвращает 302 обрабатывается Node.js (express), CORS включил. Хочу понять почему это не работает, и какие есть обходные решения?
Пример POST запроса:
function test() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:3000/api/test", true);
xhr.send();
}
Ответы (1 шт):
В классическом подходе к реализации api для web есть довольно мало весомых причин генерировать 302 в ответ на запрос с клиента. Например, есть определённый смысл, если ресурс действительно был перемещён и мы информируем клиента об этом.
Вы пишете api - так и пишите его! Запрос на http://localhost:3000/api/test должен вернуть
{
"redirect_url": "https://google.com/"
}
и клиентская часть вашего приложения должна обработать этот ответ подгрузив новую страницу.