一开始就搞错了方向,想要直接在客户端去解决问题,及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里面。