Как настроить apache для обработки нескольких доменов с помощью заголовка Access-Control-Allow-Origin?

Я хочу настроить apache для разрешения XMLHttpRequests из нескольких, но не всех доменов.

Это работает:

Header set Access-Control-Allow-Origin "*"

Но это небезопасно, я хочу разрешить домены, указанные мной, поэтому после небольшого количества поисковых запросов я добрался до этого:

Header set Access-Control-Allow-Origin "http://domain1.com http://domain2.com"

Но это только поднимает первый домен, второй не разрешается. Как правильно указать несколько доменов?

Ответ 1

вы можете использовать SetEnvIf в вашем файле .htaccess или в файле vhost (внутри группы "Каталог" ):

<IfModule mod_headers.c>
   SetEnvIfNoCase Origin "https?://(www\.)?(mydomain\.com|mydomain2\.com)(:\d+)?$" AccessControlAllowOrigin=$0
   Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
</IfModule>

С помощью этого кода вы можете разрешить доступ из

  • "mydomain.com" и "mydomain2.com"
  • с или без "www." впереди
  • с номером порта или без него
  • http или https

Вы можете добавить несколько доменов, разделенных символом | или вы можете использовать regexp для настройки разных поддоменов или паттернов.

Ответ 2

Header always append Access-Control-Allow-Origin: "http://domain1.com"
Header always append Access-Control-Allow-Origin: "http://domain2.com"