Список премьер-министров Вьетнама
- 1 year ago
- 0
- 0
Cross-origin resource sharing ( CORS ; с англ. — «совместное использование ресурсов между разными источниками») — технология современных браузеров , которая позволяет предоставить веб-страницам доступ к ресурсам другого домена .
Есть три домена , позволяющие загрузить ресурсы с сервера U. Для того, чтобы это стало возможным, веб-серверу U, который отдает контент , достаточно указать в заголовке ответа Access-Control-Allow-Origin список доверенных доменов : A, B, C. Тогда для страниц этих доменов не будут действовать ограничения принципа одинакового источника на запрашиваемые страницы:
Access-Control-Allow-Origin:
A, B, C
После этого, страницы доменов A, B, C смогут загружать контент с сервера U.
Для 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
На практике чаще используется запись из нескольких доменов , разделенных пробелом :
Access-Control-Allow-Origin: http://www.a.com http://www.b.com http://www.c.com
Технология CORS может быть использована как более современная и надёжная альтернатива JSONP , так как позволяет использовать все преимущества XMLHttpRequest , и в отличие от JSONP, не является уязвимой для SQL-инъекции [ источник не указан 905 дней ] . С другой стороны, технология CORS требует специальной поддержки в коде браузеров , а JSONP от этого не зависит.