[关闭]
@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请求第三方的数据,就会出现浏览器的跨域问题。

跨域问题的解决

使用jsonp

服务器代理

在服务端设置response

参考资料:ajax跨域问题以及解决方案
浏览器跨域问题
跨域问题:解决跨域的三种方案
Java服务器端解决跨域问题
搞定所有的跨域请求问题:Jsonp & Core

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注