每次遇到跨域、代理、CORS这几个词都懵懵的,我决定一次把他们都搞明白,以后遇到他们再也不用害怕了。
一、什么是同源策略?
同源策略是在1995年由 Netscape公司引入到浏览器的,目前所有浏览器都支持,它是浏览器最重要的安全保障,目的是严格管理不同网站间相互的资源访问(严格来说是不同“源”之间)。
什么是“源”,“源”是指:协议+域名+端口号,这三个必须都相同,才算是同源。假设我们的网站是:http://www.abc.com,那么:
同源(与路径无关)
同源(80端口是http默认端口)
同源(url忽略大小写)
不同源(协议不同)
不同源(端口不同)
不同源(域名不同)
不同源(域名不同)
不同源(域名不同)
不同源(自己服务器的IP也不行)
注意,同源策略只存在于浏览器之中,服务端发出的HTTP请求是不受限制的。
二、跨源不止AJAX
提到跨域(跨源),一般都是我们在写AJAX的时候会涉及。其实,web中还有很多别的行为也会跨域,浏览器对这些行为有不同的默认处理方式,常见的有以下这些(注意,浏览器的处理方式未经严格验证,仅供参考):