Инструменты пользователя

Инструменты сайта


php:cors

Это старая версия документа!


Суть технологии CORS Править

Есть три домена, позволяющие загрузить ресурсы с сервера U. Для того, чтобы это стало возможным, веб-серверу U, который отдает контент, достаточно указать в заголовке ответа Access-Control-Allow-Origin список доверенных доменов: A, B, C. Тогда для страниц этих доменов не будут действовать ограничения принципа одинакового источника на запрашиваемые страницы:

Access-Control-Allow-Origin: A, B, C
<?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

На практике чаще используется запись из нескольких доменов, разделенных пробелом[1]:

 Access-Control-Allow-Origin: http://www.a.com http://www.b.com http://www.c.com

Соотношение CORS и JSONP Править

Технология CORS может быть использована как более современная и надёжная альтернатива JSONP, так как позволяет использовать все преимущества XMLHttpRequest, и в отличие от JSONP, не является уязвимой для SQL-инъекции

.mw-parser-output .ts-fix-template{white-space:nowrap}.mw-parser-output .ts-fix-error{font-size:inherit}@media screen{.mw-parser-output .ts-fix-text{border:1px solid #a2a9b1;box-decoration-break:clone;margin:0 -0.1em;padding:0 0.1em;transition:background 0.1s}.mw-parser-output :hover .ts-fix-text{background:#fee7e6}}@media screen and (hover:hover){.mw-parser-output .ts-fix-comment,.mw-parser-output .ts-fix-commented>a:not(:hover){border-bottom:1px dotted;text-decoration:none}}

[источник не указан 775 дней]. С другой стороны, технология CORS требует специальной поддержки в коде браузеров, а JSONP от этого не зависит.

php/cors.1694506082.txt.gz · Последние изменения: 2023/09/12 11:08 — werwolf