为什么localhost需要CORS?

时间:2014-09-15 17:14:09

标签: xmlhttprequest localhost cors

我可能已经在stackoverflow上找到了一个我不知道的答案,对不起,我找不到它。

我的本​​地主机上运行了一个小型TCP服务器,出于安全考虑,我不支持CORS。

我的问题是,如果CORS用于跨域保护,当http://localhost/上的网页请求与http://localhost:xxxx

的连接时,为什么要求它?

我知道我可以在我的浏览器中关闭安全性,但我试图理解为什么localhost到localhost连接被视为交叉源。

XMLHttpRequest cannot load http://localhost:8000/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access. The response had HTTP status code 500.

2 个答案:

答案 0 :(得分:5)

因为localhost(端口80)是与localhost:8000不同的主机。

请参阅RFC 6454, Section 5

  If the two origins are scheme/host/port triples, the two origins
  are the same if, and only if, they have identical schemes, hosts,
  and ports.

答案 1 :(得分:2)

同源政策

同源策略允许在浏览器中运行的脚本仅向同一域上的页面发出请求。这意味着请求必须具有 相同的URI方案,主机名和端口号。 This在Mozilla开发者网络上的帖子明确定义了原点的定义和当请求导致失败时。如果您从http://www.example.com/,发送请求,则以下类型的请求会导致失败。

https://www.example.com/ – Different protocol (or URI scheme).
http://www.example.com:8080/myUrl – Different port (since HTTP requests run on port 80 by default).
http://www.myotherexample.com/ – Different domain.
http://example.com/ – Treated as a different domain as it requires the exact match (Notice there is no www.).

有关更多信息,请参阅this link