Почему HTTP-заголовок Origin не всегда отправляется для запросов CORS? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть сайт на primary.example.com, который обслуживает страницу, которая содержит файл javascript из other.example.com

, который javascript делает запрос XHR / ajax GET на other.example.com/data.json

Я думаю, что это запрос CORS, потому что источником должно быть primary.example.com

Поэтому я ожидаю, что запрос data.json будет включать заголовок Origin. Браузер должен добавить это в запрос javascript, поскольку он отправляется в домен, отличный от того, с которого была загружена страница.

Все браузеры, на которых я тестировал (Chrome, Firefox, WebKit), делают это , Но, просматривая журналы своего сервера, я вижу много запросов на data.json, которые были отклонены сервером на other.example.com, поскольку они не отправили заголовок Origin в запросе. Почему это так?

Редактировать

Я не знаю, относится ли это к делу, но мне просто пришло в голову, что это может быть так: начальная загрузка страницы инициируется перенаправлением 302 из другой сервер.

Полный процесс таков:

UML sequence diagram

На этой диаграмме запрос ➐ является запросом AJAX, который в основном , но не всегда отправляется с заголовком Origin в запросе.

1 Ответ

0 голосов
/ 26 марта 2020

Я полагаю, что это могут быть сканеры входящей почты / средства просмотра ссылок и т. Д. c. Я проверил 10 из IP-адресов, которые делали это: все они принадлежали Microsoft.

Теперь я думаю, что у них есть какой-то автоматизированный процесс, позволяющий перехватывать ссылки, отправленные в ходе сканирования почты (большинство людей были отправлены ссылки на страницу в электронном письме), возможно, чтобы проверить, выглядит ли она git ', возможно, для создания предварительного просмотра.

Я использую PHP FPM с nginx, и в этих в случаях просто нет заголовка Origin; поскольку в нем нет ключа с именем HTTP_ORIGIN в массиве $_SERVER.

Я полагаю, что, как говорит единовременный комментатор, этого не должно происходить: это неверное поведение CORS. Таким образом, тот факт, что это происходит , предполагает, что это вызывает какой-то ненормальный процесс просмотра. (Принимая во внимание, что подавляющее большинство traffi c является действительным; имеет заголовок Origin.) Кроме того, у нас не было никаких жалоб от людей, что сайт не работает - поскольку это петиция для защиты уязвимых людей, сталкивающихся с трудностями во время коронавируса, вы можете подумать, что большинство людей, посещающих страницу, захотят подписать петицию (для которой требуется CORS); по моему опыту, такие люди обычно довольно громкие, если это не работает.

Почтовые сканеры - мой вывод.

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