jquery之ajax跨域请求

原创 2016年08月30日 19:34:47

由于最近在调试新的应用程序,程序中涉及到http的跨域问题,ajax的示例脚本如下:

     

$.ajax({
   type: methodType,
   url: urlAddress,
   async:asyncType,
   data:postdata,
   dataType: ajaxDataType,
   xhrFields:{withCredentials: true},
       crossDomain:true,
   contentType:contType,
   beforeSend:function() {
      funObj.ajaxBefore && funObj.ajaxBefore();
   },
   success:function(data){
      funObj.ajaxSuccess(data,funObj);
   },
   complete:function(){
      funObj.ajaxComplete && funObj.ajaxComplete();
   },
   error:function(xhr, textStatus, errorThrown) {
      if(xhr.status == 403) {
         Materialize.toast("你当前的会话已失效或无权访问该地址!",MSG_TIMEOUT);
      } else {
         if(funObj.ajaxError) {
             funObj.ajaxError();
         } else {
             ajaxError();
         }
       }
      return;
   }
});

其中:
   xhrFields:{withCredentials: true} 表示将本次请求附加cookie信息;
   crossDomain:true 表示允许脚本跨域请求;
后台的服务器端的web.xml增加一个filter配置如下:
<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
        <param-name>cors.allowOrigin</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedMethods</param-name>
        <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.exposedHeaders</param-name>
        <param-value>X-Test-1,X-Test-2</param-value>
    </init-param>
    <init-param>
        <param-name>cors.supportsCredentials</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>cors.maxAge</param-name>
        <param-value>3600</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
上面需要注意的是:filter-mapping需要是排在第一个的filter,如果不是第一个在其它filter做的一些鉴权会有问题,切记。

相关文章推荐

Jquery跨域Ajax请求测试

  • 2013年08月26日 17:42
  • 543KB
  • 下载

跨域解决方案 & 使用angularJS和jQuery进行Ajax请求的差异

前端同学李雷和后台同学韩梅梅分别在自己电脑上进行开发,后台接口写好的时候,李雷改动完就把前端代码上传到gitlab,然后在测试机上从gitlab上拉下来,然后在测试机上移动最新代码,最后回到本机刷新页...

JavaWeb项目jquery ajax跨域请求node.js渲染highcharts

$(function () { $.ajax({ url : 'http://192.168.1.58:3000/china?datatime='+new Date().getTime...

jQuery ajax请求相关与跨域问题

当我们使用ajax跨域请求数据时,往往设置返回数据类型为jsonp格式,而由于服务器端返回的json数据格式不对,就会导致客户端提示‘json数据格式错误’。但我们看返回的json数据确实是标准的js...

利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据

开发环境: Visual Studio 2005 SP1部署环境:Windows Server 2008 r2 + IIS 7 1.新建数据源项目CrossDomain    主要文件如下:   1....

用jquery的ajax跨域请求

业务需求:一台独立的新闻服务器(A),对外提供新闻。 客户(B)网页引入A的js,即可请求新闻。 B请求新闻所产生的页面有A的js生成。 A提供 来让B 引入。 一般的ajax无法跨域请求,j...
  • xeidea
  • xeidea
  • 2011年11月14日 10:55
  • 1769

跨域请求之jQuery的ajax jsonp的使用解惑

前天在项目中写的一个ajax jsonp的使用,出现了问题:可以成功获得请求结果,但没有执行success方法,直接执行了error方法提示错误——ajax jsonp之前并没有用过,对其的理解为跟普...
  • jiebing
  • jiebing
  • 2014年06月28日 12:36
  • 824

跨域请求之jQuery的ajax jsonp的使用

前天在项目中写的一个ajax jsonp的使用,出现了问题:可以成功获得请求结果,但没有执行success方法,直接执行了error方法提示错误——ajax jsonp之前并没有用过,对其的理解为...

jQuery实现ajax跨域请求XML数据 并解析XML元素

名称 文件路径 文件大小 状态 操作 等待加载,请选择上传文件......

jQuery的Ajax跨域请求

关键:ajax的dataType为jsonp,并且在请求的url中加上"?jsoncallback=?" 前台代码: Html代码 script type="te...
  • Myth734
  • Myth734
  • 2014年09月26日 13:45
  • 452
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jquery之ajax跨域请求
举报原因:
原因补充:

(最多只允许输入30个字)