跨域都有什么解决办法呀?

2021-01-28 16:33发布

6条回答
小猴子
2021-01-29 13:40

PHP端修改header(XHR2方式)

在php接口脚本中加入以下两句即可:

header('Access-Control-Allow-Origin:*');//允许所有来源访问

header('Access-Control-Allow-Method:POST,GET');//允许访问的方式

iframe

所以跨域通信其实很简单,在iframe和主页里都不断地检测hashtag有没有变化,一旦有变化,就做出相应的改变。

setInterval(function() {    var hashVal = [removed].hash.substr(1);
    document.body.style.backgroundColor = hashVal;
}, 1000);

这么做的问题就是,需要不断地去检测hashtag是否改变,效率有点低,如果能通过原生的监听来实现,就会更加高效和优雅。这里就涉及到另一个iframe特性:可以设置其他iframe的大小,即使是不同域的。而页面的resize事件是可以监听的,所以就有了下面这个模型。

主页面先把消息附加到hashtag,然后改变一个隐藏的(或者页面外的)iframe的size。这个iframe会监听resize事件,同时捕获到hashtag。捕获到hashtag后(也就是所需的数据),再对hashtag做进一步的处理。处理完后把数据传到主页内的一个iframe,或者直接操作该iframe。这样就比较优雅地完成了跨域操作。

 通过 window.name 实现跨域

这篇文章是对 JavaScript跨域总结与解决办法 的补充。

有三个页面:

  • a.com/app.html:应用页面。

  • a.com/proxy.html:代理文件,一般是一个没有任何内容的html文件,需要和应用页面在同一域下。

  • b.com/data.html:应用页面需要获取数据的页面,可称为数据页面。


一周热门 更多>