大佬教程收集整理的这篇文章主要介绍了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("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里面配置一下路径
<mvc:interceptors> <!--过滤所有请求,处理跨域请求问题 --> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="com.util.CommonInterceptor" /> </mvc:interceptor> </mvc:interceptors>
这样就可以了 不过有篇博客说针对简单跨域没问题。但是针对post+json请求却失败,提示跨域失败。所以下面记录一下他的解决方式
建立一个类 继承 OncePerrequestFilter
public class CrossFilter extends OncePerrequestFilter { @Override protected void doFilterInternal(httpServletrequest request,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里面设置一下
<filter> <filter-name>cors</filter-name> <filter-class>cn.***.filter.CrossFilter</filter-class> </filter> <filter-mapping> <filter-name>cors</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
然后就可以了 上述方式为spring3.0版本 如果是4.0版本可以用下面方式(无测)
xml里面配置
<mvc:cors> <mvc:mapping path="/**" allowed-origins="*" allow-credentials="true" max-age="1800" allowed-methods="GET,OPTIONS"/> </mvc:cors>
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,FilterChain filterChain) throws ServletException,IOException { if (request.getHeader("Access-Control-request-Method") != null && "OPTIONS".equals(request.getMethod())) { response.addHeader("Access-Control-Allow-Origin",deletE,OPTIONS"); response.addHeader("Access-Control-Allow-Headers","origin,content-type,accept,x-requested-with,sid,mycustom,smuser"); response.addHeader("Access-Control-Max-Age",responsE); } }
好了,代码到此结束!
总结
以上所述是小编给大家介绍的Springmvc ajax跨域请求处理方法实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
以上是大佬教程为你收集整理的Springmvc ajax跨域请求处理方法实例详解全部内容,希望文章能够帮你解决Springmvc ajax跨域请求处理方法实例详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。