Springmvc ajax跨域请求处理方法实例详解

网友投稿 349 2023-03-26


Springmvc ajax跨域请求处理方法实例详解

上次给一个网站写网站  前后端分离 最后跪在ajax跨域上面了  自己在网上找了个方法  亲试可用  记录一下

写一个类  继承HandlerInterceptorAdapter

package com.util;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class CommonInterceptor extends HandlerInterceptorAdapter {

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

response.setHeader("Access-Control-Allow-Origin", "*");

response.setHeader(http://"Access-Control-Allow-Methods", "*");

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"); // 是否允许浏览器携带用户身份信息(cookie)

return true;

}

}

然后在xml里面配置一下路径

这样就可以了  不过有篇博客说针对简单跨域没问题。但是针对post+json请求却失败,提示跨域失败。所以下面记录一下他的解决方式

建立一个类  继承 OncePerRequestFilter

public class CrossFilter extends OncePerRequestFilter {

@Override

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {

if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {

// CORS "pre-flight" request

response.addHeader("Access-Control-Allow-Origin", "*");

response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");

response.addHeader("Access-Control-Allow-Headers", "Content-Type");

response.addHeader("Access-Control-Max-Age", "1800");//30 min

}

filterChain.doFilter(request, response);

}

}

web.xml里面设置一下

cors

cn.***.filter.CrossFilter

cors

/*

然后就可以了  上述方式为spring3.0版本  如果是4.0版本可以用下面方式(无测)

xml里面配置

PS:使用SpringMVC解决Ajax跨域问题

package com.mengyao.system.filter;

import java.io.IOException;

import javax.servlet.FilterChain;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Component;

import org.springframework.web.filter.OncePerRequestFilter;

/**

* CORSFilter 解决跨域问题

* @author mengyao

*

*/

@Component

public class InitCORSFilter extends OncePerRequestFilter {

private Logger logger = LoggerFactory.getLogger(InitCORSFilter.class);

public InitCORSFilter() {

logger.info("==== 初始化系统允许跨域请求 ====");

}

/**

* 解决跨域:Access-Control-Allow-Origin,值为*表示服务器端允许任意Domain访问请求

*/

@Override

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)

throws ServletException, IOException {

if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {

response.addHeader("Access-Control-Allhttp://ow-Origin", "*");

response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");

response.addHeader("Access-Control-Allow-Headers", "origin, content-type, accept, x-requested-with, sid, mycustom, smuser");

response.addHeader("Access-Control-Max-Age", "1800");//30 min

}

filterChain.doFilter(request, response);

}

}

好了,代码到此结束!

总结

以上所述是给大家介绍的Springmvc ajax跨域请求处理方法实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Spring 中如何控制2个bean中的初始化顺序
下一篇:飞控系统接口管理平台(飞控系统接口管理平台怎么用)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~