26

我有两个站点: 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-both-http”中“Access-Control-Allow-Origin:”标头的值-和-https.com“。

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

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

4

1 回答 1

52

的,HTTP 和 HTTPS 的来源不同。

来源主机名端口方案的组合。

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

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

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

于 2013-10-23T13:13:16.240 回答