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