Совместное использование ресурсов домена GET: "отказался получить небезопасный заголовок" etag "из ответа"
Простой запрос GET без пользовательских заголовков. Ответ возвращается, как ожидалось. Данные в теле доступны, но не заголовки.
Когда я пытаюсь получить доступ к заголовку "etag", браузеры вызывают исключение:
Отказано, чтобы получить небезопасный заголовок "etag"
Chrome, Safari и Firefox ведут себя одинаково. Я не тестировал его в IE.
Что мне здесь не хватает?
Ответы
Ответ 1
При использовании CORS отображаются только простые заголовки ответов. Простые заголовки ответов определены здесь. ETag
не является простым заголовком ответа. Если вы хотите открыть непростые заголовки, вам нужно установить заголовок Access-Control-Expose-Headers
, например:
Access-Control-Expose-Headers: ETag
Однако обратите внимание, что я заметил ошибки в браузерах Chrome, Safari и Firefox, которые предотвращают правильное отображение непростых заголовков. Это может быть исправлено к настоящему времени, я не уверен.
Вам не нужно выполнять предпродажный запрос, поскольку предполетная проверка требуется только для методов не-GET/POST-http или непростых заголовков запросов (и вы спрашиваете об заголовках ответов).
Ответ 2
Вы когда-нибудь пробовали 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