我想为跨域访问头配置apache . 我已经尝试了多个组合,如论坛上的线程数量建议 . 但它不适合我 .
方式,我试过:
1)使用 Header set
在不同的行上指定域,如下所示:
Header set Access-Control-Allow-Origin "example1.com"
Header set Access-Control-Allow-Origin "example2.com"
Header set Access-Control-Allow-Origin: "example3.com"
通过此设置,它将选择 only last one 并忽略其余部分 .
2)使用 Header add
在不同的行上指定域,如下所示:
Header add Access-Control-Allow-Origin "example1.com"
Header add Access-Control-Allow-Origin "example2.com"
Header add Access-Control-Allow-Origin: "example3.com"
有了这个,它在 Headers 中显示了所有三个域,但是在Firefox上没有获取字体 .
3.)尝试使用 SetEnvIf
,但它再次无效:
SetEnvIf Origin "http(s)?://(www\.)?(mydomain.com|mydomain2.com)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
最后使用“*”,但我不想使用它 .
请帮忙 .
6 回答
对于3个域,在.htaccess中:
我试过这个,它对我有用 . 如果它不适合你,请告诉我 .
除非我误解the manual,否则它应该是:
该手册指出
set
和add
操作的行为方式如下:set: "The response header is set, replacing any previous header with this name"
add: "...This can result in two (or more) headers having the same name. This can lead to unforeseen consequences..."
要限制对某些URI的访问,请检查以下文档:
CrossOriginRequestSecurity
Server-Side Access Control#Apache_examples
一个有用的技巧是使用Apache重写,环境变量和标头将Access-Control-Allow- *应用于某些URI . 例如,这可用于在没有凭据的情况下将跨源请求约束到GET /api( . *) . json请求:
此外,通常,根据W3 Wiki - CORS Enabled#For_Apache要公开 Headers ,您可以在“目录”,“位置”和“文件”部分或.htaccess文件中添加以下行 .
AND,你可以使用add而不是set,但要注意add可以多次添加 Headers ,所以使用set通常更安全 .
尝试这个,它适合我 . 在.htaccess中申请:
这适用于Classic ASP: