Подтвердить что ты не робот

Существуют ли какие-либо браузеры, которые устанавливают заголовок источника в "null" для конфиденциальных контекстов?

Спецификация Origin указывает, что заголовок Origin может иметь значение "null". Обычно это делается, когда запрос поступает из файла на пользовательском компьютере, а не с размещенной веб-страницы. В спецификации также указывается, что Origin может быть нулевым, если запрос исходит из "конфиденциального" контекста.

Мои вопросы: что такое "конфиденциальный" контекст и существуют ли какие-либо браузеры, демонстрирующие это поведение?

Вот полная фраза из спецификации Origin:

Всякий раз, когда пользовательский агент выдает HTTP-запрос из "конфиденциальный" контекст, пользовательский агент ДОЛЖЕН отправить значение "null", в поле заголовка Origin.

ПРИМЕЧАНИЕ. В этом документе не определяется понятие конфиденциального контекст. Приложения, которые генерируют HTTP-запросы, могут назначать контексты как конфиденциальные, чтобы налагать ограничения на то, как пользователь агенты генерируют поля заголовка Origin.

4b9b3361

Ответ 1

Я наконец понял ответ на этот вопрос. Существует, по крайней мере, еще одна ситуация, когда заголовок Origin может иметь значение "null". При переадресации во время запроса CORS, если запрос перенаправляется на URL-адрес другого сервера, заголовок Origin будет изменен на "null". Я полагаю, что это считается "конфиденциальным контекстом", потому что браузер не хочет просачивать исходное происхождение на новый сервер, так как клиент, возможно, не собирался делать запрос на новый сервер в первую очередь.

Ответ 2

Отметьте здесь: https://bugs.chromium.org/p/chromium/issues/detail?id=154967

by [email protected]

Это поведение действительно находится в спецификации [1]. См. шаг 7.1.7 6.

К сожалению, соглашение о передаче строки "null" заставляет казаться, что это может быть ошибка; Я так и думал, пока не проследил это:)

Вероятно, мы могли бы лучше объяснить это в инспекторе:

http://www.w3.org/TR/cors/#generic-cross-origin-request-algorithms

Ответ 3

У меня есть аналогичная ситуация, выполняющая переадресации в ajax из домена A- > B и, наконец, обратно в A. Поскольку исходное значение null, CORS терпит неудачу.

В домене A я устанавливаю Access-Control-Allow-Origin: null, который, кажется, работает, должен будет протестировать больше.