关于跨域问题的解决办法

时间:2022-08-28 11:32:26

跨域是指 在不同的域之间进行数据传输,只要协议、域名、端口有任何一个不同,都被当作是不同的域。
解决跨域的方法:
1.JSONP: 利用script的src 可以在不同域之间请求数据的特点,向某一地址发请求, 需要后台返回一个能够执行的js文件,
关于跨域问题的解决办法

 

关于跨域问题的解决办法

 


如上图,这里利用jquery.ajax的jsonp 后台返回的是一个函数的调用,函数的声明是ajax中的success

我们也可以自己写一个script 利用上面的方式
关于跨域问题的解决办法

关于跨域问题的解决办法

 


后台返回的是一个 data的函数调用, 声明在前台页面中. 这些都需要后台的配合,因为返回的数据前面 需要加一下函数名,必须和后台约定好


2.window.name来进行跨域:window对象有个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window.name都有读写的权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置。

3.设置代理:在web服务器上封装第三方服务,然后给自己同源的web页面调用

我用node搭建了一个代理服务器,在这里使用了http-proxy-middleware 这个中间件 非常好用。 只需要设置请求然后就直接可以使用,如图

关于跨域问题的解决办法

 


只需要在页面中发送请求,即可用代理服务器代理到请求的服务器,拿到数据。

4. 还有一种postMessage ,一种HTML5新增方法,现在浏览器及IE8+支持,简单易用高大上。但是 我不是很喜欢用iframe。也不知道问什么,天生的排斥。 所以在这里推荐大神写的http://www.cnblogs.com/dolphinX/p/3464056.html