允许HTTP和HTTPS的跨域请求

9
我的网站支持http和https协议。但是,使用以下代码在.htaccess文件中时,我只能设置一个域名允许CORS请求: Header set Access-Control-Allow-Origin: http://example.com 我想允许我的网站的http和https版本(而不仅仅是“*”)进行CORS。我尝试了这里的解决方案: Access-Control-Allow-Origin Multiple Origin Domains? 但问题是所有解决方案都依赖于请求中的Origin标头,该标头可能不存在并且也不安全。(任何人都可以在其请求中放置Origin标头)
我想知道请求是否已通过https提供,并使用此信息设置正确的CORS标头。类似于这样:
SetEnvIf servedOverHttps httpsOrigin=true
Header set Access-Control-Allow-Origin: https://example.me env=httpsOrigin

SetEnvIf notServedOverHttps httpOrigin=true
Header set Access-Control-Allow-Origin: http://example.me env=httpOrigin

如何确定这是一个https请求?

1个回答

4

你尝试过使用HTTPS变量吗?

对于所有的https请求,它将被设置为"on"。 你的.htaccess应该像这样:

Header set Access-Control-Allow-Origin: http://example.com             #default
Header set Access-Control-Allow-Origin: https://example.com env=HTTPS   #override if https

5
如果要从PHP文件中以编程方式设置标头,该怎么办? - vivex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接