Точка CORS HTTP заголовков - PullRequest
0 голосов
/ 29 июня 2018

В следующей статье MDN обсуждаются заголовки CORS: Обмен ресурсами между источниками (CORS)

Мой вопрос довольно простой:

С учетом simple request (не preflighted): какой смысл добавлять CORS headers на стороне сервера, если мы отправляем запрошенный ресурс с HTTP response независимо (т.е. отправляем ресурс с тем же сообщением, что и CORS response headers)? Я думал, что весь смысл CORS headers заключается в том, что UA получает запрошенный ресурс только в том случае, если сервер это разрешил.

Не проще ли отправить или не отправить ресурс, в зависимости от того, какой клиент спрашивает?

1 Ответ

0 голосов
/ 29 июня 2018

Для запроса в том же домене (который не требует CORS), я согласен, что добавлять заголовки CORS не имеет особого смысла, но в равной степени это не приносит никакого вреда.

Для запросов из разных источников заголовки сообщают браузеру, разрешен ли странице доступ к ресурсу или нет.

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

Кроме того, вы спрашиваете, не проще ли серверу запретить доступ к ресурсу в зависимости от того, какой клиент делает запрос. Конструкция HTTP означает, что не важно, кто или что является клиентом, если он соответствует стандарту. Единственный способ угадать природу клиента - это прочитать строку «Пользователь-агент», но подделать ее тривиально, поэтому вы никогда не сможете использовать ее на сервере для реализации чего-либо, связанного с безопасностью. В стандартах также нет ничего обязательного, что позволило бы вам знать, был ли запрос сделан AJAX или нет (поскольку только запросы AJAX подчиняются CORS, просто знание того, что клиент является браузером, в любом случае недостаточно для удовлетворения запроса. требование).

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