В чем смысл http-заголовка Access-Control-Allow-Origin? - PullRequest
3 голосов
/ 23 января 2012

У меня проблемы с отображением точки http-заголовка Access-Control-Allow-Origin.

Я подумал, что если клиент (браузер) один раз получит «нет» от сервера, он не будет отправлять дальнейшие запросы. Но Chrome и Firefox продолжают отправлять запросы.

Может ли кто-нибудь рассказать мне пример из реальной жизни, где такой заголовок имеет смысл?

спасибо!

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Заголовок Access-Control-Allow-Origin должен содержать список источников, которым «разрешен» доступ к ресурсу.

Таким образом, определение того, какие домены могут отправлять запросы вашему ресурсу на сервер.

Например, отправка заголовка Access-Control-Allow-Origin: * позволит всем сайтам получить доступ к запрошенному ресурсу.

С другой стороны, отправка обратно Access-Control-Allow-Origin: http://foo.example.com разрешит доступ только к http://foo.example.com.

Более подробную информацию можно найти на сайте разработчиков Mozilla

Например

Предположим, у нас есть собственный URL в домене, который возвращает коллекцию музыкальных альбомов JSON исполнителя. Это может выглядеть так:

http://ourdomain.com/GetAlbumsByArtist/MichaelJackson.json

Мы можем использовать AJAX на нашем веб-сайте, чтобы получить эти данные JSON, а затем отобразить их на нашем веб-сайте.

Но что если кто-то с другого сайта захочет использовать наш объект JSON для себя? Возможно, у нас есть другой веб-сайт http://subdomain.ourdomain.com, которым мы владеем и хотели бы использовать наш канал с ourdomain.com.

Традиционно мы не можем делать междоменные запросы на эти данные.

Указывая другие домены, которым разрешен доступ к нашему ресурсу, мы теперь открываем двери для междоменных запросов.

2 голосов
/ 23 января 2012

CORS реализует двухэтапное представление безопасности перекрестного происхождения.Проблема, которую он пытается решить, состоит в том, что в общедоступном Интернете существует множество серверов, написанных людьми, которые либо (а) предположили, что ни один браузер никогда не разрешит запрос на отправку из разных источников, либо (б) не думали оэто вообще.

Итак, некоторые люди хотят разрешить общение между источниками, но создатели браузеров не чувствуют, что могут просто разблокировать браузеры и внезапно оставить все эти сайты открытыми.Чтобы избежать этого, они изобрели структуру из двух частей.Прежде чем браузер разрешит взаимодействие между источниками с сервером, этот сервер должен , в частности , указать, что он хочет разрешить доступ из разных источников.В простых случаях это Access-Control-Allow-Origin.В более сложных случаях это полный механизм preflight * 1007. *.

По-прежнему верно, что серверы должны осуществлять надлежащий контроль доступа к ресурсам на своих ресурсах.CORS позволяет серверу указывать браузерам, что он знает обо всех проблемах.

...