跨域资源共享(CORS)是否区分HTTP和HTTPS?

时间:2013-10-23 12:21:47

标签: javascript http xmlhttprequest cors

我有两个网站: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)

我DID将“https //:www.domain-only-uses-https.com”设置为服务器“www.domain-uses-”中“Access-Control-Allow-Origin:”标题的值both-http-and-https.com“。

但现在似乎Chrome只允许请求1,但禁止请求2。

所以我的问题是:“Access-Control-Allow-Origin”标题是否区分HTTP和HTTPS? 希望我已经明确了......

1 个答案:

答案 0 :(得分:28)

,HTTP和HTTPS来源不同。

origin 主机名端口计划的组合。

  http://foo.example.com:8080/
  ^^^^   ^^^^^^^^^^^^^^^ ^^^^
   ||           ||        ||
 scheme      hostname    port

如果并非所有这些字段在两个资源之间匹配,则资源来自不同的来源。因此,您必须明确指定资源是否可以使用HTTP方案从源访问,或者使用HTTPS方案来源。

有些浏览器只允许Access-Control-Allow-Origin标头包含与每个响应一起发送的一个来源(或*);但是,您的服务器可以检测到请求的Origin标头,并在CORS响应中发送相同的来源。