作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 00:07:57 阅读 我要评论

什么情况下才会出现跨域? 假设域名是:http://www.example.com.cn/ 如果所请求的域名跟这个域名不致,这种情况就是跨域,由于跨域存在漏洞,所以一般来说正常的跨域请求方式是请求不到的。 解决方式: 一、window.name 1、 服务器返回 复制代码 代码如下: <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 复制代码 代码如下: <form action="url" method="POST" target="iframe1"> <button type="submit" value="submit" /> </form> 二、JSONP 服务器返回 callback({"id": "3", "name": "leisure"}); 复制代码 代码如下: <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> 三、jQuery.getJSON 服务器返回 json格式数据 test({"id": "3", "name": "leisure"}); test函数名为callback参数中定义 复制代码 代码如下: $.getJSON(url + "?callback=?", data, function(data) { } 注意callback=?这个参数必须带上,jquery会自动生成一个函数名替换这个问号!jQuery.getJSON实际上是用了JSONP方式实现。 四、flash跨域 服务器添加crossdomain.xml http://www.example.com.cn/crossdomain.xml 复制代码 代码如下: <?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*.another.com.cn" /> </cross-domain-policy>

  推荐阅读

  javascript实现tabs选项卡切换效果(扩展版)

前段时间写了个tabs 选项卡切换效果,今天抽空在原有的基础上进行了扩展,加入了自动轮播,这样就变成了类似图片轮播的效果了。 html 代码: 复制代码 代码如下: <!DOCTYPE HTML> <html lang="en-US"> <head> <met>>>详细阅读


本文标题:Javascript跨域请求的4种解决方式

地址:http://www.17bianji.com/kaifa2/JS/22209.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)