源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Javascript跨域请求的4种解决方式

  • 时间:2020-10-09 05:54 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Javascript跨域请求的4种解决方式
[b]什么情况下才会出现跨域[/b]? 假设域名是:http://www.example.com.cn/ 如果所请求的域名跟这个域名不致,这种情况就是跨域,由于跨域存在漏洞,所以一般来说正常的跨域请求方式是请求不到的。 [b]解决方式[/b]: [b]一、window.name[/b] 1、 服务器返回
[u]复制代码[/u] 代码如下:
<script>window.name='{"id":"3", "name":"leisure"}';</script> 2、定义一个iframe,添加onload事件 <iframe id="iframe1" onload="iLoad"><iframe> <script type="text/javascript"> var load = false; function iLoad() { if(load == false) { // 同域处理,请求后会再次重新加载iframe document.getElementById('iframe1').contentWindow.location = '/'; load = true; } else { // 获取window.name的内容,注意必须进行同域处理后方可访问! var data = document.getElementById('iframe1').contentWindow.name; alert(data); // {"id":"3", "name":"leisure"} load = false; } } </script>
3、定义一个form,设置form的target为iframe的id,然后提交form
[u]复制代码[/u] 代码如下:
<form action="url" method="POST" target="iframe1"> <button type="submit" value="submit" /> </form>
[b]二、JSONP[/b] 服务器返回 callback({"id": "3", "name": "leisure"});
[u]复制代码[/u] 代码如下:
<script type="text/javascript"> function callback(data) { alert(data); } </script> <script type="text/javascript" src="http://www.example.com.cn/product.jsp?id=5&jsonp=callback"></script>
[b]三、jQuery.getJSON[/b] 服务器返回 json格式数据 test({"id": "3", "name": "leisure"}); test函数名为callback参数中定义
[u]复制代码[/u] 代码如下:
$.getJSON(url + "?callback=?", data, function(data) { }
注意callback=?这个参数必须带上,jquery会自动生成一个函数名替换这个问号!jQuery.getJSON实际上是用了JSONP方式实现。 [b]四、flash跨域[/b] 服务器添加crossdomain.xml http://www.example.com.cn/crossdomain.xml
[u]复制代码[/u] 代码如下:
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*.another.com.cn" /> </cross-domain-policy>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部