关闭

jquery之ajax跨域请求

228人阅读 评论(0) 收藏 举报
分类:

由于最近在调试新的应用程序,程序中涉及到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做的一些鉴权会有问题,切记。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:99784次
    • 积分:2262
    • 等级:
    • 排名:第17185名
    • 原创:135篇
    • 转载:2篇
    • 译文:0篇
    • 评论:13条
    最新评论
    设计模式