Javascript跨域访问解决方案

本文为收集网上的跨域问题加以整理。

1、CORS(跨域资源共享,Cross-Origin Resource Sharing)

这种方法是使用ajax请求跨域资源,因为同源策略问题,正常不允许访问,只需要在请求的服务器响应的头信息中添加

response.addHeader("Access-Control-Allow-Origin","http://127.0.0.1"); //请求IP地址为127.0.0.1
response.addHeader("Access-Control-Allow-Origin","*"); //不限制IP

2、动态创建<script>标签

  script标签本身就可以访问其它域的资源,不受浏览器同源策略的限制,可以通过在页面动态创建script标签

var script = document.createElement('script');  
    script.src = "http://aa.xx.com/js/*.js";  
    document.body.appendChild(script);

3、JSONP

这种方法其实是JQuery对动态创建<script>标签的一种封装

封装方法一:

$.ajax({
   async:false,
   url: http:127.0.0。1,//跨域的访问地址
   type: "GET",
   dataType: 'jsonp',
   jsonp: 'jsoncallback',
   data: qsData,
   timeout: 5000,
   beforeSend: function(){
   //jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了
   },
   success: function (json) {//客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数
    if(json.actionErrors.length!=0){
           alert(json.actionErrors);
     }
       genDynamicContent(qsData,type,json);
   }
});

封装方法二(高级封装):

$.getJSON(" http://跨域的dns/document!searchJSONResult.action?name1="+value1+"&jsoncallback=?",
      function(json){
         if(json.属性名==值){
            // 执行代码
         }
      });

4、通过设置document.domain

这种方法只适合解决子域不同的跨域问题





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值