CORS(Cross-rigin Resource Sharing) 当我们谈到 HTTP, 一个源是由 URL中的以下几个不同部分组成的:
- 协议( 例如: http 还是 https)
- 域名(例如: 30secondsofcode.org)
- 端口号 (例如 80 还是 3000 )
只有所有这三个部分相等,浏览器才认为两个URL是同源的。如果其中任何一个不同,浏览器则认为两个URL是跨源。比如以下几个例子都是跨源的:
http://30secondsofcode.org和https://www.30secondsofcode.org(不同的协议)http://www.30secondsofcode.org和http://dev.30secondsofcode.org(不同的域名)https://30secondsofcode.org和https://30secondsofcode.org:3000(不同的端口号)
还有一个重要点,路径(path:所有域名之后的内容)并不是源的一部分。所以 30secondsofcode.org 和 30secondsofcode.org/articles 是同源的。
当CORS提及的时候,总是相对于同源策略(Same-Origin Policy)来说的,同源策略是浏览器一项重要的安全功能。它通过禁止跨源的请求来避免一些未授权的恶意网站访问其他源上的敏感信息。 因为同源策略比较严格,CORS允许服务端来明确哪些其他源可以访问它的资源。 CORS是通过CORS headers, Request字段中的Origin,也Response字段中的 Access-Control-Allow-Origin 来实现的。这样,服务端就可以允许一些特定的网站访问它,而仍然禁止其他网站访问它。