重学HTTP:理解同源策略和CORS
阅读原文时间:2023年08月09日阅读:1

​每次遇到跨域、代理、CORS这几个词都懵懵的,我决定一次把他们都搞明白,以后遇到他们再也不用害怕了。

一、什么是同源策略?

同源策略是在1995年由 Netscape公司引入到浏览器的,目前所有浏览器都支持,它是浏览器最重要的安全保障,目的是严格管理不同网站间相互的资源访问(严格来说是不同“源”之间)。

什么是“源”,“源”是指:协议+域名+端口号,这三个必须都相同,才算是同源。假设我们的网站是:http://www.abc.com,那么:

http://www.abc.com/a

同源(与路径无关)

http://www.abc.com:80

同源(80端口是http默认端口)

http://www.Abc.com

同源(url忽略大小写)

https://www.abc.com

不同源(协议不同)

http://www.abc.com:81

不同源(端口不同)

http://abc.com

不同源(域名不同)

http://api.abc.com

不同源(域名不同)

http://api.www.abc.com

不同源(域名不同)

http://220.188.32.45:80

不同源(自己服务器的IP也不行)

注意,同源策略只存在于浏览器之中,服务端发出的HTTP请求是不受限制的。

二、跨源不止AJAX

提到跨域(跨源),一般都是我们在写AJAX的时候会涉及。其实,web中还有很多别的行为也会跨域,浏览器对这些行为有不同的默认处理方式,常见的有以下这些(注意,浏览器的处理方式未经严格验证,仅供参考):