允许对 http 和 https 的跨源请求
Posted
技术标签:
【中文标题】允许对 http 和 https 的跨源请求【英文标题】:Allowing cross origin requests for http and https 【发布时间】:2015-06-25 14:28:12 【问题描述】:我的网站同时支持 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】:您是否尝试过使用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
【讨论】:
如果从 php 文件以编程方式设置标题怎么办?以上是关于允许对 http 和 https 的跨源请求的主要内容,如果未能解决你的问题,请参考以下文章