JavaScript中的跨域问题及解决办法


JavaScript中的跨域问题及解决办法

文章插图

一、什么是跨域?
在日常开发过程中,经常要处理一些跨域问题,那么在了解跨域之前,首先要知道什么是同源策略(same-origin policy) 。简单来讲同源策略就是浏览器为了保证用户信息的安全,防止恶意的网站窃取数据,禁止不同域之间的JS进行交互 。对于浏览器而言只要域名、协议、端口其中一个不同就会引发同源策略,从而限制他们之间如下的交互行为:
1.Cookie、LocalStorage和IndexDB无法读取;
2.DOM无法获得;
3.AJAX请求不能发送 。
跨域的严格一点的定义是:只要协议,域名,端口有任何一个的不同,就被当作是跨域 。
如下表所示:
JavaScript中的跨域问题及解决办法

文章插图
 
【JavaScript中的跨域问题及解决办法】特别注意两点:
第一,如果是协议和端口造成的跨域问题“前台”是无能为力的,
第二:在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上 。
“URL的首部”指window.location.protocol +window.location.host,也可以理解为“Domains, protocols and ports must match” 。


    推荐阅读