Распределение ресурсов между доменами GET: «отказался получить небезопасный заголовок« etag »» от Response - PullRequest
48 голосов
/ 28 апреля 2011

Простой запрос GET без пользовательских заголовков. Ответ возвращается, как и ожидалось. Данные в теле доступны, но не заголовки.

Когда я пытаюсь получить доступ к заголовку "etag", браузеры выдают исключение:

Отказался от получения небезопасного заголовка "etag"

Chrome, Safari и Firefox ведут себя одинаково. Я не проверял это на IE.

Что мне здесь не хватает?

Ответы [ 2 ]

81 голосов
/ 30 апреля 2011

При использовании CORS отображаются только простые заголовки ответа.Простые заголовки ответа определены здесь .ETag не простой заголовок ответа.Если вы хотите использовать непростые заголовки, вам нужно установить заголовок Access-Control-Expose-Headers, например:

Access-Control-Expose-Headers: ETag

Однако обратите внимание, что я заметил ошибки в Chrome, Safari и Firefox, которые не-простые заголовки от выставления правильно.Сейчас это может быть исправлено, я не уверен.

Вам не нужно делать предварительный запрос, так как предварительный просмотр требуется только для http-методов без GET / POST или для непростых запросите заголовки (и вы спрашиваете о response headers).

2 голосов
/ 28 апреля 2011

Вы когда-нибудь пробовали 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...