- Cross-origin resource sharing
-
Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей.Проверить информацию. Необходимо проверить точность фактов и достоверность сведений, изложенных в этой статье.
На странице обсуждения должны быть пояснения.У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их (с соблюдением правил использования изображений).
Для поиска иллюстраций можно:- попробовать воспользоваться инструментом FIST: нажмите эту ссылку, чтобы начать поиск;
- попытаться найти изображение на Викискладе;
- просмотреть иноязычные варианты статьи (если они есть);
- см. также Википедия:Источники изображений.
В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 19 октября 2012.Cross-origin resource sharing (CORS) — технология современных браузеров, которая позволяет предоставить веб-странице доступ к ресурсам другого домена. До недавнего времени основным способом преодоления ограничений, наложенных в same-origin-policy относительно XSS запросов, было использование JSONP. К сожалению, сам JSONP имеет неустранимое ограничение — позволяет только получение данных GET методом, то есть отправка данных через POST метод остается недоступной.
Содержание
Суть технологии CORS
Сама технология достаточно проста. При выдаче страницы веб-серверу Z, который отдает контент, достаточно указать в заголовке ответа Access-Control-Allow-Origin список доверенных доменов: A, B, C, и для запрашивающих страниц с указанных доменов ограничения XSS не будут действовать:
Access-Control-Allow-Origin: http://example.com
Тогда страницы с серверов A, B, C смогут загружать контент с сервера example.com.
Для PHP это реализуется вызовом функции header():
<?php header("Access-Control-Allow-Origin: http://example.com"); ?>
Упрощенный пример
Для инициации Cross-origin запроса, браузер клиента добавляет в HTTP запрос Origin (домен сайта с которого происходит запрос). Например страница http://www.a.com/page.html пытается получить данные с страницы http://www.b.com/cors.txt. В случае если браузер клиента поддерживает технологию CORS запрос будет выглядеть вот так:
GET /cors.txt HTTP/1.1 Host: www.b.com Origin: www.a.com
Если сервер www.b.com хочет разрешить получение данных с www.a.com то в ответе сервера будет присутствовать строчка:
Access-Control-Allow-Origin: http://www.a.com
Если в ответе сервера отсутсвует данная строка, то браузер поддерживающий технологию CORS передаст ошибку вместо данных.
В случае если сервер хочет разрешить доступ любому домену, он может указать в ответе:
Access-Control-Allow-Origin: *
Если сервер хочет разрешить доступ более чем одному домену, то в ответе сервера должно быть по одной строчке Access-Control-Allow-Origin для каждого домена.
Access-Control-Allow-Origin: http://www.a.com Access-Control-Allow-Origin: http://www.b.com Access-Control-Allow-Origin: http://www.c.com
Отношение CORS к JSONP
Технология CORS может быть использована как более современная и надежная альтернатива JSONP, так как позволяет использовать все преимущества XMLHttpRequest, и не имеет риска инъекции как JSONP. С другой стороны технология CORS поддерживается только современными браузерами, а JSONP работает и в старых тоже.
Поддержка браузерами
- Gecko 1.9.1 (Firefox 3.5,[4] SeaMonkey 2.0[5]) и выше.
- WebKit (Safari 4 and above, [1] Google Chrome 3 и выше, возможно более ранние.
- MSHTML/Trident 4.0 (Internet Explorer 8) предоставляет частичную поддержку через XDomainRequest объект.
- Presto браузеры (Opera) CORS реализован в Opera 12.00 и Opera Mobile 12, но не в Opera Mini.
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.Категории:- Стандарты W3C
- AJAX
Wikimedia Foundation. 2010.