跨域:跨当然是跨过去,域当然是别的服务器 (说白点就是去别服务器上取东西) 只要协议、域名、端口有任何一个不同,都被当作是不同的域;
下面提供两个方式解决跨域
1.jsonp方式:
网页端:
$.ajax({
type:'get',
url:'http://192.168.1.110:8080/NeoTest/userController/showUser',
dataType:'jsonp',
jsonp:"jsonpCallback",
data:{"name":'5'},
success:function(data){
console.log('data:'+JSON.stringify(data ));
},
error:function(err){
console.log('err:'+err);
}
})
server端:
HttpServletResponse response;
try {
response.setContentType("text/plain");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
Map<String,String> map = new HashMap<String,String>();
map.put("result", "content");
PrintWriter out = response.getWriter();
JSONObject json=new JSONObject();
String jsonpCallback = request.getParameter("jsonpCallback");//客户端请求参数
User user=this.userService.getUserById(2);
json.put("user", user);
out.println(jsonpCallback+"("+json.toString()+")");//返回jsonp格式数据
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
2.CORSFilter
网页端:
$.ajax({
type:'get',
url:'http://192.168.1.110:8080/NeoTest/userController/showUser',
dataType:'json',
data:{"name":'5'},
success:function(data){
console.log('data:'+JSON.stringify(data ));
},
error:function(err){
console.log('err:'+err);
}
})
server端:
public class CORSFilter implements Filter {
private static int count=1;
public CORSFilter() {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response=(HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type");
response.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(req, res);
System.out.println("***filter***"+count++);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
然后在web.xml配置
<filter>
<filter-name>CORSFilter</filter-name>
<filter-class>cn.zhang.core.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CORSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
即可。
以上。
谢我跟你急!就是这么不要脸。。。