Что должен делать HTTP-сервер, когда получает заголовок «Origin: null»?(CORS) - PullRequest
0 голосов
/ 29 января 2019

Определение заголовка Origin гласит:

origin-or-null  = origin / %s"null" ; case-sensitive

Должно ли "ноль" управляться как доменное имя?Другими словами, может ли сервер принимать запросы, когда использовался «ноль» (по крайней мере, в некоторых обстоятельствах), или это все время считается ошибкой?

Я искал объяснение в Получить документацию , но до сих пор я не нашел ответа на этот конкретный вопрос.

1 Ответ

0 голосов
/ 31 января 2019

Отправляя заголовок Origin: null, браузер указывает, что запрос от непрозрачного источника .То есть браузер сигнализирует вам, как сопровождающему сервера, что запрос не был инициирован обычным способом из приложения, работающего в Интернете и использующего метод Ajax или Fetch или XHR для вызова вашего сервера - так что, вероятно, это не так.сценарий использования, который вы на самом деле намереваетесь поддерживать.

Таким образом, вы обычно не хотите отправлять заголовок ответа Access-Control-Allow-Origin при ответе на запросы Origin: null.Другими словами, вы хотите, чтобы браузеры блокировали любой код JavaScript внешнего интерфейса от доступа к ответу, который вы отправляете обратно для таких запросов.

Хотя самый распространенный случай, когда браузеры устанавливают заголовок Origin на null, этовозможно, когда код внешнего интерфейса запускается из чьей-то локальной файловой системы (с URL-адреса file://, а не с веб-сервера) - во многих других случаях браузеры также устанавливают заголовок Origin на null.Для получения исчерпывающего списка см. https://stackoverflow.com/a/42242802/441757.

https://w3c.github.io/webappsec-cors-for-developers/#avoid-returning-access-control-allow-origin-null с объяснением того, как вы должны смотреть на такие случаи:

Может показаться безопасным возвращать Access-Control-Allow-Origin: "null", но сериализация источника любого ресурса, который использует неиерархическую схему (например, data: или file:) и документы в песочнице, определена как «нулевая».Многие пользовательские агенты предоставляют таким документам доступ к ответу с заголовком Access-Control-Allow-Origin: "null", и любой источник может создать враждебный документ с «нулевым» источником.Поэтому следует избегать «нулевого» значения для заголовка ACAO.

Другими словами, вы можете подумать, что было бы полезно отправить обратно Access-Control-Allow-Origin для Origin: null запросов, если вы намеренно хотитеразрешить использование ответов с вашего сервера во внешнем коде JavaScript, работающем на чьей-то локальной файловой системе (например, для кого-то, выполняющего локальное тестирование).Но, делая это, вы не разрешаете только случай локальной файловой системы, но также и все другие случаи, описанные в https://stackoverflow.com/a/42242802/441757. Это все или ничего.

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