Установите заголовки контроля доступа.htaccess, чтобы они влияли только на один сайт

У меня есть сайт mysite.com, который запрашивает ресурсы у субдомена mautic.mysite.com, на котором работает Mautic. Без заголовков контроля доступа в mautic.htaccess я получаю ошибку 403 для этих ресурсов, с ними я получаю ошибку 500, когда пытаюсь получить доступ к Mautic. Я пытаюсь установить заголовки, только если запрос приходит от mysite.com, но безрезультатно. Вот что я попробовал:

# create variable for http or https
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]


<If "%{HTTP_REFERER} == %{ENV:proto}://!mautic\.mysite.com/.*"> 
    <IfModule mod_headers.c>
        Header add Access-Control-Allow-Origin %{ENV:proto}://mysite.com
        Header set Access-Control-Allow-Credentials true
        Header set Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token
    </IfModule>
</If>

С вышеупомянутыми ресурсами нет проблем, но я все еще получаю ошибку 500. Может кто-нибудь сказать, пожалуйста, как это исправить, или есть другой способ сделать это?

ура

ОБНОВЛЕНИЕ: я понял, что проблема была из-за hostgator, использующего apache 2.2, который не поддерживает операторы If. В настоящее время я пытаюсь что-то вроде:

SetEnvIfNoCase Origin %{ENV:proto}://mysite.com ENV_SET
Header add Access-Control-Allow-Origin %{ENV:proto}://mysite.com env=ENV_SET

Тем не менее, это не работает. Если я уберу SetEnvIf, заголовок все еще добавлен.

Я обнаружил, что это означает, что он должен быть размещен в конфигурации, а не в.htaccess, но я не могу понять, что это значит.

0 ответов

Другие вопросы по тегам