Java中SSM框架解决跨域请求

发布时间:2026/7/28 14:38:05

Java中SSM框架解决跨域请求 方法一CrossOrigin注解的方法只能作用在一个Controller层直接在Controller类或方法前加上CrossOrigin注解即可允许所有ip跨域访问加在Controller类上表示该Controller的所有方法都支持跨域加在Controller中的方法上表示仅该方法支持跨域CrossOrigin // 允许所有ip跨域 CrossOrigin(origins 192.168.0.1) //只允许指定ip跨域方法二在SpringMVC配置文件spring-context.xml中配置跨域请求!-- 接口跨域配置 -- mvc:cors !-- allowed-methods* -- !-- 表示所有请求都有效 -- mvc:mapping path/** allowed-origins* allowed-methodsPOST, GET, OPTIONS, DELETE, PUT allowed-headersContent-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With allow-credentialstrue / /mvc:cors方法三使用cors-filter包配置跨域1、引入pom.xml依赖!-- cors-filter包配置跨域 -- dependency groupIdcom.thetransactioncompany/groupId artifactIdcors-filter/artifactId version2.5/version /dependency2、在web.xml文件中注册Filter跨域过滤器!-- 配置跨域过滤器 -- filter filter-nameCORS/filter-name filter-classcom.thetransactioncompany.cors.CORSFilter/filter-class init-param param-namecors.allowOrigin/param-name param-value*/param-value /init-param init-param param-namecors.supportedMethods/param-name !-- param-value*/param-value -- !-- 表示所有请求都有效 -- param-valueGET, POST, HEAD, PUT, DELETE/param-value /init-param init-param param-namecors.supportedHeaders/param-name param-valueAccept, Origin, X-Requested-With, Content-Type, Last-Modified/param-value /init-param init-param param-namecors.exposedHeaders/param-name param-valueSet-Cookie/param-value /init-param init-param param-namecors.supportsCredentials/param-name param-valuetrue/param-value /init-param /filter filter-mapping filter-nameCORS/filter-name url-pattern/*/url-pattern /filter-mapping方法四自己写CrossingFilter跨域过滤器1、写CrossingFilter过滤器类实现(Interfaces)本地Apache Tomcat的Filter接口package com.pmsapi.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CrossingFilter implements Filter { private boolean isCross false; Override public void destroy() { isCross false; } Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (isCross) { HttpServletRequest httpServletRequest (HttpServletRequest) request; HttpServletResponse httpServletResponse (HttpServletResponse) response; System.out.println(拦截请求: httpServletRequest.getServletPath()); httpServletResponse.setHeader(Access-Control-Allow-Origin, *); // httpServletResponse.setHeader(Access-Control-Allow-Methods, *); // 表示所有请求都有效 httpServletResponse.setHeader(Access-Control-Allow-Methods, POST, GET, OPTIONS, DELETE); httpServletResponse.setHeader(Access-Control-Max-Age, 0); httpServletResponse.setHeader(Access-Control-Allow-Headers, Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token); httpServletResponse.setHeader(Access-Control-Allow-Credentials, true); httpServletResponse.setHeader(XDomainRequestAllowed, 1); } chain.doFilter(request, response); } Override public void init(FilterConfig filterConfig) throws ServletException { String isCrossStr filterConfig.getInitParameter(IsCross); isCross isCrossStr.equals(true) ? true : false; System.out.println(跨域开启状态 isCrossStr); } }2、在web.xml文件中注册CrossingFilter过滤器!-- 配置跨域过滤器 -- filter filter-nameCrossingFilter/filter-name filter-classcom.pmsapi.filter.CrossingFilter/filter-class init-param param-nameIsCross/param-name param-valuetrue/param-value /init-param /filter filter-mapping filter-nameCrossingFilter/filter-name url-pattern/*/url-pattern /filter-mapping

相关新闻