Cross-origin resource sharing

Cross-origin resource sharing

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.



Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Cross-origin resource sharing" в других словарях:

  • Cross-Origin Resource Sharing — (CORS) is a web browser technology specification, which defines ways for a web server to allow its resources be accessed by a web page from a different domain.[1] Such access would otherwise be forbidden by the same origin policy. Contents 1… …   Wikipedia

  • Resource Description Framework — Das Resource Description Framework (RDF, engl. (sinngemäß) „System zur Beschreibung von Ressourcen“) bezeichnet eine Familie von Standards des World Wide Web Consortiums (W3C) zur formalen Beschreibung von Informationen über Objekte, sogenannte… …   Deutsch Wikipedia

  • XMLHttpRequest — HTTP Persistence · Compression · HTTPS Request methods OPTIONS · GET · HEAD · POST · PUT · DELETE · TRACE · CONNECT Header fields Cookie · ETag · Location · Referer DNT · …   Wikipedia

  • Enterprise resource planning — (ERP) is the planning of how business resources (materials, employees, customers etc.) are acquired and moved from one state to another. An ERP system supports most of the business system that maintains in a single database the data needed for a… …   Wikipedia

  • History of Firefox — (category) Contents Firefox 10 · 11 · 12 Firefox 7 · 8 · 9 Firefox 4 · …   Wikipedia

  • Human resource management system — HRMS redirects here. For the ship prefix, see His/Her Dutch Majesty s Ship.A Human Resource Management System (HRMS, EHRMS), Human Resource Information System (HRIS), HR Technology or also called HR modules, refers to the systems and processes at …   Wikipedia

  • Web Ontology Language — Die Web Ontology Language (kurz OWL) ist eine Spezifikation des World Wide Web Consortiums (W3C), um Ontologien anhand einer formalen Beschreibungssprache erstellen, publizieren und verteilen zu können. Es geht darum, Termini einer Domäne und… …   Deutsch Wikipedia

  • XLink (Syntax) — XLink ist eine attributbasierte Syntax zur Definition von Links in XML Dokumenten. Ein XLink kann eine Verbindung von einem Punkt A zu einem Punkt B sein (ähnlich dem aus HTML bekanntem Hyperlink Element <a>). Sie können jedoch auch… …   Deutsch Wikipedia

  • RDF-Schema — Das Resource Description Framework Schema (RDFS) ist wie RDF eine W3C Empfehlung. Ebenso wie XML im konkreten Anwendungsfall die Definition eines speziellen Dokumenttyps benötigt, z. B. als Dokumenttypdefinition (DTD), legt das RDF Modell… …   Deutsch Wikipedia

  • XML Binding Language — XBL (XML Binding Language) ist eine XML basierte Auszeichnungssprache, mit der man das Verhalten und Aussehen von XML und HTML Elementen beschreiben kann. Dies geschieht über sogenannte Bindings (Bindungen) in XBL, die an ein solches Element… …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»