@wxf
2018-02-28T15:54:39.000000Z
字数 566
阅读 851
面试系列
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
所谓的同源,就是指域名、协议、端口均相等。举例如下:
调用 | 是否跨域 | 说明 |
---|---|---|
http://www.abc.com/a/b 调用 http://www.abc.com/d/c | 非跨域 | |
http://www.abc.com/a/b 调用 http://www.def.com/d/c | 跨域 | 域名不一致 |
http://www.abc.com:81/a/b 调用 http://www.abc.com:82/d/c | 跨域 | 端口不一致 |
http://www.abc.com/a/b 调用 https://www.abc.com/d/c | 跨域 | 协议不同 |
注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。
在一个http请求中,http头部Referer或Origin字段标识了当前域名,Host字段标识了此时请求的域名。故,如果我们在当前的js页面,通过ajax请求第三方的数据,就会出现浏览器的跨域问题。
参考资料:ajax跨域问题以及解决方案
浏览器跨域问题
跨域问题:解决跨域的三种方案
Java服务器端解决跨域问题
搞定所有的跨域请求问题:Jsonp & Core