我对使用.htaccess文件了解不多.我试过研究.所以,也许有人可以帮助我在这里.我想同时允许https和http.让我解释.
http正在运行,但HTTPS上的网站在控制台中给我一个错误
XMLHttpRequest无法加载https://domain1.com/data.json."Access-Control-Allow-Origin"标头的值为" https://www.domain1.coms ",不等于提供的来源.因此,不允许来源" https://www.domain1.com "访问.
如果我将"http"更改为" https ",则适用于https网站,但http网站不起作用.我如何同时允许两者?
我希望这对你们有意义!感谢您的任何帮助!
这是我的代码:
<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www\.)?(domain.com|domain2.com|domain3.com|domain4.com|domain5.com)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials true
</IfModule>
Run Code Online (Sandbox Code Playgroud)
小智 2
正如另一个答案所指出的,$1
应该删除 ,因为它是s
附加https://
到 URL 末尾的,因此应该更改为:
SetEnvIf Origin "http(s)?://(www\.)?(domain.com|domain2.com|domain3.com|domain4.com|domain5.com)$" AccessControlAllowOrigin=$0
Run Code Online (Sandbox Code Playgroud)
这将确保AccessControlAllowOrigin
设置为Origin
标头的确切值。
http://
我认为有时工作的原因https://
有时是因为浏览器很可能缓存来自服务器的响应。因此,您应该同时使用http://
和进行响应https://
,或者您应该指定Vary: Origin
标头以通知浏览器响应取决于Origin
标头。
我还建议更改Header add
为Header set
,Header merge
或Header append
, 因为mod_headers
文档指出:
add
The response header is added to the existing set of headers, even
if this header already exists. This can result in two (or more)
headers having the same name. This can lead to unforeseen
consequences, and in general set, append or merge should be used
instead.
Run Code Online (Sandbox Code Playgroud)
所以,我的建议是指定 Vary 标头:
<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www\.)?(domain.com|domain2.com|domain3.com|domain4.com|domain5.com)$" AccessControlAllowOrigin=$0
Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials true
Header merge Vary Origin
</IfModule>
Run Code Online (Sandbox Code Playgroud)
或者同时指定http://
和https://
:
<IfModule mod_headers.c>
SetEnvIf Origin "https?://(www\.)?(domain.com|domain2.com|domain3.com|domain4.com|domain5.com)$" AccessControlAllowOrigin=$1$2
Header append Access-Control-Allow-Origin http://%{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header append Access-Control-Allow-Origin https://%{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials true
Header merge Vary Origin
</IfModule>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1367 次 |
最近记录: |