跨域CORS
如果URL上未标明端口,那么http默认就是80端口,https默认是443端口
同源策略是指在协议、域名、端口一致的情况下就属于同源
在页面对应的地址不同源的情况下,那么浏览器就会判定为跨域,就会导致如下的问题
1、Ajax请求不能正常发送
2、无法获取DOM元素进行操作
3、无法读取cookie、LocalStorage和IndexDB
浏览器为什么要设置跨域
跨域只会出现在浏览器端,因为浏览器的形态是很开放的,所以我们就需要对他进行对应的限制
其次,同源策略主要是为了保证用户信息的安全,可以分为两种:Ajax同源策略和DOM同源策略
Ajax同源策略主要是使得不同源的页面不能获取Cookie并且不能发起Ajax请求,这样在一定程度上就防止了CSRF攻击
DOM同源策略也一样,它限制了不同源页面不能获取DOM,这样就可以防止一些恶意网站在自己的网站中利用iframe嵌入正规的网站并迷惑用户,一次来窃取用户的信息
跨域的解决方式
1、使用代理(proxy)
2、设置CORS
3、JSONP
4、...
JSONP
利用script标签没有跨域限制的漏洞,网页可以得到从其他源动态产生的JSON数据,JSONP请求一定需要对方对方的服务器做支持才可以
优缺点:
1、(优点)Ajax和JSONP都是客户端朝服务端发送请求,从而获取数据的方式,但是Ajax属于同源策略,而JSONP属于非同源策略。
2、(优点)兼容性好,能解决主流浏览器跨域访问的问题
3、(缺点)仅支持GET请求
4、(缺点)不安全,可能会遭到XXS攻击