我目前使用它,它可以完美地允许跨域 Ajax 请求。
SetEnvIf Origin "^http(s)?://(.+\.)?(my-specified-domain\.com)$" origins_is=$0
Header add Access-Control-Allow-Origin %{origin_is}e env=origin_is�
Header add Access-Control-Allow-Credentials: true�
但是,如果不对域名进行硬编码,是否可以做到这一点?
我相信您无法在 SetEnv 中嵌入变量,而且我只是看不到允许替代方案的方法,无论您在哪个域上托管网站。
这当然是一个显而易见且必不可少的要求。谁愿意每次都对域进行硬编码?
也许最好的方法是匹配 ServerName 设置(例如在虚拟主机中)。如果 URL 匹配该设置(无论采用哪种方案),则允许跨域请求。
答案1
你可以:
Header add Access-Control-Allow-Origin *
但我认为它太宽容了,不建议在生产网站上使用它。
编辑:
我还没有尝试过,但是使用类似的东西你应该可以根据 http Origin 标头获取来源:
SetEnvIfNoCase Origin ^(.*)$ origin=$1