【问题标题】:Allowing cross origin requests for http and https允许对 http 和 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 请求?

【问题讨论】:

    标签: apache .htaccess https cors


    【解决方案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 文件以编程方式设置标题怎么办?
    猜你喜欢
    • 2018-04-27
    • 2015-04-15
    • 2016-06-03
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 2012-11-03
    相关资源
    最近更新 更多