Java + Ajax跨域解决方案整理

Java + Ajax跨域解决方案整理为什么会跨域呢 简单来说就是前端页面与后台服务没有部署在同一个服务器上 产生跨域的情况有 1 域名不同 端口也不同 2 域名相同但是端口不同 3 域名不同 端口相同 解决方案 一 JSONP 方式 1 只支持 get 方法 不支持 postfang 方法 使用时需修改前端和后端代码 用起来也不太方便 本文不推荐使用 二 使用 springMVC 架构的 使用版本 4 2 以上

为什么会跨域呢?简单来说就是前端页面与后台服务没有部署在同一个服务器上。

产生跨域的情况有:

1.域名不同,端口也不同;

2.域名相同但是端口不同;

3.域名不同,端口相同。

解决方案:

一、JSONP方式

1.只支持get方法,不支持postfang方法;

使用时需修改前端和后端代码,用起来也不太方便,本文不推荐使用。

二、使用springMVC架构的,使用版本4.2以上

可以使用@CorsOrigin注解,可以放在方法上,也可以放在类名上

三、使用filter

该方法也参考了spring跨域的实现

public class PostFilter implements Filter {

public void destroy() {

}

@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {

HttpServletResponse response = (HttpServletResponse) resp;
response.setHeader("Access-Control-Allow-Origin",
((HttpServletRequest) req).getHeader("Origin"));
response.setHeader("Access-Control-Allow-Methods",
"POST,GET,OPTIONS,DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept");
response.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(req, resp);

}

@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO 自动生成方法存根

}

}

web.xml配置加入

        
action
com.filter.PostFilter


action
*

前端ajax

	$.ajax({
type:"post",
url:url,
data:jsonstr,
dataType:"json",
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function(msg){

},
error:function(XMLHttpRequest, textStatus, errorThrown){
var readystate=XMLHttpRequest.readyState;
console.log('readystate:'+readystate+'textStatus:'+textStatus);
if(readystate==4)
readystate='该帐号已被他人登录';
else readystate='请检查网络';
$('#label1').text(readystate);
$.mobile.hidePageLoadingMsg();
},
complete:function(XHR, TS){XHR = null;}
});

以上便是我用过的方法

编程小号
上一篇 2025-01-19 19:17
下一篇 2025-01-19 19:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/148161.html