2014-02-11 5 views
0

Я делаю запрос CORS, который возвращает пустой ответ 202 с заголовком местоположения для запроса данных.Переадресация CORS XHR не работает

Но браузер не перенаправляет URL-адрес в заголовке местоположения. Пробовал это в Chrome/Firefox, и он делает то же самое.

jQuery.ajax(url, options).done((result: any) => {       
        }); 

.done вызывается сразу после того, как 202 ответа

ответ

2

Посмотрите спецификации HTTP, особенно this part:

14,30 Расположение

Используется Расположение поле заголовка отклика перенаправить получателя в другое место, кроме Request-URI, для завершения запроса или идентификатора о новом ресурсе. Для ответов 201 (Создано) расположено местоположение нового ресурса, который по запросу был создан . Для ответов 3xx местоположение ДОЛЖНО указать предпочтительный URI сервера для автоматического перенаправления до ресурс. Значение поля состоит из одного абсолютного URI.

Поскольку автоматическое перенаправление упоминается только для ответов 3xx (на самом деле я проверил всю спецификацию), то это означает, что для любого другого кода состояния это зависит от браузера. Wikipedia также подтверждает, что:

Чтобы предоставить информацию о местоположении вновь созданного ресурса. В таком случае, заголовок Место должно быть отправлено с кодом состояния HTTP из 201 или 202

Я думаю, что можно с уверенностью предположить, что это просто, как работают браузеры. Вам придется перенаправить вручную.

+0

Это полезно знать. К сожалению, браузер не позволяет мне читать заголовки. У меня есть Access-Control-Expose-Headers: * set. Я очень уверен в спецификации CORS, разрешен ли шаблон или нет. – user460025

+0

@ user460025 Я думаю, что 'Access-Control-Expose-Headers' должен быть списком заголовков, разделенных запятыми, и он не позволяет' * '. Попробуй. Если это не поможет, я не знаю, как вам помочь, извините. – freakish

Смежные вопросы