Синтаксис Access-Control-Allow-Origin

Я хочу разрешить совместное использование ресурсов между всеми субдоменами from.example.com. Поэтому я добавил заголовок совместного использования ресурсов Cross-origin, как показано ниже, на страницу в subdomain1.to.example.com.

<?php header('Access-Control-Allow-Origin: *.from.example.com');

И я попытался получить доступ к форме страницы subdomain1.from.example.com с помощью ajax. Я не получил ответа. Поэтому я просто изменил заголовок выше, как показано ниже.

<?php header('Access-Control-Allow-Origin: http://subdomain1.from.example.com');

Это хорошо работает только для subdomain1.from.example.com.

В чем проблема с первым заголовком?

Ответ 1

В заголовке Access-Control-Allow-Origin не допускаются подстановочные знаки. Это должно быть точное совпадение. Вы можете либо разрешить все домены, установив значение *, либо условно отразить значение заголовка запроса Origin, если оно соответствует одному из разрешенных доменов.

Обратите внимание, что Спецификация Origin позволяет для нескольких источников, разделенных пробелом. Однако я не уверен, что это работает с заголовком Access-Control-Allow-Origin. Возможно, стоит попробовать.