我有一个网站mysite.com,该网站从运行Mautic的子域mautic.mysite.com请求资源。如果没有mautic .htaccess中的访问控制头,那么我会收到这些资源的403错误,当我尝试访问Mautic时,我得到500错误。我只是在请求来自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,仍然会添加标题。
我发现this表明它应该放在配置而不是.htaccess中,但是我无法理解这意味着什么。