corsFilter java ajax解决认证(Authorization)跨域问题

来源:互联网 发布:java aes 32位key 编辑:程序博客网 时间:2024/05/20 06:55

corsFilter java ajax解决认证(Authorization)跨域问题

一开始就搞错了方向,想要直接在客户端去解决问题,及jsp或者html中,其实应该从服务端入手,客户端不需要修改任何东西。

所谓的跨域就是希望客户端能够调用与本地不同的ip或者同一个ip不同的端口或者是不同的域名。

用的是corsFilter,apachetomcat已经对这个过滤器以及使用方法做了详细的说明,地址是:https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html 

1.首先在pom.xml里面引入包

 

org.apache.tomcat

 tomcat-catalina 

 2.3 

 provided 

2.在web.xml里面配置过滤的条件

CorsFilter

org.apache.catalina.filters.CorsFilter

cors.allowed.origins

*

cors.allowed.methods

GET,POST,HEAD,OPTIONS,PUT,DELETE

       cors.allowed.headers

      Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization

   

CorsFilter

/*

有时候跨域调用需要使用认证,例如如下所示:

$.ajax({ 

 url:Document.contextPath +'/services/rest/auth/login',

type:"GET",

async:false,

contentType:"application/json;charset=utf-8",

dataType:"json",

beforeSend:function(request) 

 request.setRequestHeader("Authorization","Basic " + Document.token);},

success:function(data) { }

});


需要在header里面增加Authorization,因此在服务端的cors.allowed.headers增加Authorization

启动后可以在调试工具中发现同一个接口请求了两次,​

​​​​我所理解的是第一次请求是判断客户端是否具有访问服务端接口的权利

只有通过了才能调用,由下图也可以看出认证信息在header里面