Обмен ресурсами кросс -домена Get: «Отказался получить небезопасную заголовок« etag »из ответа
-
26-10-2019 - |
Вопрос
Простой запрос GET без пользовательских заголовков. Ответ возвращается, как и ожидалось. Данные в теле доступны, но не заголовки.
Когда я пытаюсь получить доступ к заголовку «ETAG», браузеры поднимают исключение:
Отказался получить небезопасный заголовок "etag"
Chrome, Safari и Firefox ведут себя одинаково. Я не проверял это на т.е.
Что мне здесь не хватает?
Решение
Только простые заголовки ответа обнажаются при использовании CORS. Простые заголовки ответа определены здесь. ETag
не простые заголовки ответов. Если вы хотите разоблачить непревзойденные заголовки, вам нужно установить Access-Control-Expose-Headers
Заголовок, как так:
Access-Control-Expose-Headers: ETag
Тем не менее, обратите внимание, что я заметил ошибки в Chrome, Safari и Firefox, которые предотвращают правильные заголовки, которые не позволяют разоблачить. Это может быть исправлено к настоящему времени, я не уверен.
Вам не нужно делать запрос на предварительный полевой полезно, так как предварительный полевой фликт требуется только для не Get/Post HTTP-методов или непреодолимых запрос заголовки (и вы спрашиваете о отклик заголовки).
Другие советы
Вы когда -нибудь пробовали Ajax 2.0 (совместное использование доменов) - это методология, недавно выпущенная W3C: http://www.w3.org/tr/xmlhttprequest2/#ref-cors
Также есть еще один способ сделать это, который называется JSON-P, это как запрос JSON, но вы можете использовать его для перекрестных доменов: http://en.wikipedia.org/wiki/jsonp
Оба могут быть очень опасными для владельцев сайта, если не настраивать правильно. Так что будьте осторожны при его использовании.
PS] Не уверен, поможет ли это: http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html