允许对http和https的跨源请求

时间:2015-04-18 18:28:24

标签: apache .htaccess https cors

我的网站同时支持http和https协议。但是,使用.htaccess文件中的以下代码,我只能设置一个域来允许CORS请求:

Header set Access-Control-Allow-Origin: http://example.com

我想在我的网站的http和https版本(不仅仅是“*”)中允许使用CORS,并尝试使用以下解决方案: Access-Control-Allow-Origin Multiple Origin Domains?

但问题是所有解决方案都依赖于请求中的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 个答案:

答案 0 :(得分: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