跨域资源共享 (CORS) 是不是区分 HTTP 和 HTTPS?
Posted
技术标签:
【中文标题】跨域资源共享 (CORS) 是不是区分 HTTP 和 HTTPS?【英文标题】:Does Cross-Origin Resource Sharing(CORS) differentiate between HTTP AND HTTPS?跨域资源共享 (CORS) 是否区分 HTTP 和 HTTPS? 【发布时间】:2013-11-01 17:18:18 【问题描述】:我有两个网站:https//:www.domain-only-uses-https.com 和 www.domain-uses-both-http-and-https.com
现在我在前者的页面中向后者发出2个ajax GET请求,一个是
https://www.domain-uses-both-http-and-https.com/some-path (using the HTTPS scheme)
另一个是
http://www.domain-uses-both-http-and-https.com/some-other-path (using the HTTP scheme)
我确实将“https//:www.domain-only-uses-https.com”设置为服务器“www.domain-uses-”中“Access-Control-Allow-Origin:”标头的值http-和-https.com”。
但现在看来 Chrome 只允许请求 1,而请求 2 被禁止。
所以我的问题是:“Access-Control-Allow-Origin”标头是否区分 HTTP 和 HTTPS? 希望我已经说清楚了..
【问题讨论】:
我很确定你想写http://
而不是http//:
,并且与https..
相同
【参考方案1】:
是的,HTTP 和 HTTPS 的来源不同。
origin 是 hostname、port 和 scheme 的组合。
http://foo.example.com:8080/
^^^^ ^^^^^^^^^^^^^^^ ^^^^
|| || ||
scheme hostname port
如果不是所有这些字段在两个资源之间都匹配,则这些资源来自不同的来源。因此,您必须明确指定资源是可以从使用 HTTP 方案的源还是使用 HTTPS 方案的源访问。
某些浏览器只允许Access-Control-Allow-Origin
标头包含与每个响应一起发送的准确的一个来源(或*
);但是,您的服务器可以检测到请求的 Origin
标头并在 CORS 响应中发送相同的来源。
【讨论】:
可以是hostname
或IP
。 developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin以上是关于跨域资源共享 (CORS) 是不是区分 HTTP 和 HTTPS?的主要内容,如果未能解决你的问题,请参考以下文章