首页 > 上网技巧 > 电脑小技巧 > Javascript跨域请求获得结果的4种解决方式

Javascript跨域请求获得结果的4种解决方式

时间:2014-08-25 11:23 作者:QQ地带 我要评论

如果所请求的域名跟这个域名不致,这种情况就是跨域,由于跨域存在漏洞,所以一般来说正常的跨域请求方式是请求不到的,所以有了本文的出现,感兴趣的你可以参考下哈,希望可以帮助到你
什么情况下才会出现跨域? 
假设域名是:http://www.oicqzone.com/ 
如果所请求的域名跟这个域名不致,这种情况就是跨域,由于跨域存在漏洞,所以一般来说正常的跨域请求方式是请求不到的。 
解决方式: 
一、window.name 
1、 服务器返回 
代码如下:
 
  1. <script>window.name='{"id":"3", "name":"leisure"}';</script>  
 
2、定义一个iframe,添加onload事件 <iframe id="iframe1" onload="iLoad"><iframe> 
 
  1. <script type="text/javascript">  
  2. var load = false;  
  3. function iLoad() {  
  4. if(load == false) {  
  5. // 同域处理,请求后会再次重新加载iframe  
  6. document.getElementById('iframe1').contentWindow.location = '/';  
  7. load = true;  
  8. } else {  
  9. // 获取window.name的内容,注意必须进行同域处理后方可访问!  
  10. var data = document.getElementById('iframe1').contentWindow.name;  
  11. alert(data); // {"id":"3", "name":"leisure"}  
  12. load = false;  
  13. }  
  14. }  
  15. </script>  
 
3、定义一个form,设置form的target为iframe的id,然后提交form 
 代码如下:
 
 
  1. <form action="url" method="POST" target="iframe1">  
  2. <button type="submit" value="submit" />  
  3. </form>  
 
二、JSONP 
服务器返回 callback({"id": "3", "name": "leisure"}); 
复制代码 代码如下:
 
 
  1. <script type="text/javascript">  
  2. function callback(data) {  
  3. alert(data);  
  4. }  
  5. </script>  
  6. <script type="text/javascript" src="http://www.oicqzone.com/product.jsp?id=5&jsonp=callback"></script>  
三、jQuery.getJSON 
服务器返回 json格式数据 test({"id": "3", "name": "leisure"}); test函数名为callback参数中定义 
代码如下:
 
  1. $.getJSON(url + "?callback=?", data, function(data) {  
  2. }  
 
注意callback=?这个参数必须带上,jquery会自动生成一个函数名替换这个问号!jQuery.getJSON实际上是用了JSONP方式实现。 
四、flash跨域 
服务器添加crossdomain.xml 
http://www.oicqzone.com/crossdomain.xml 
代码如下:
 
  1. <?xml version="1.0"?>  
  2. <cross-domain-policy>  
  3. <allow-access-from domain="*.ksair.com.tw" />  
  4. </cross-domain-policy>  

 


标签: JS
顶一下
(102)
100%
踩一下
(0)
0%

Google提供的广告