方法1:采用过滤器
package cn.mwee.wpos.report.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 CrossOriginFilter 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", "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);
}
}
然后在web.xml中设置
<!--跨域请求设置-->
<filter>
<filter-name>CrossOriginFilter</filter-name>
<filter-class>cn.mwee.wpos.report.filter.CrossOriginFilter/filter-class>
<init-param>
<param-name>IsCross</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CrossOriginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
方法2:采用springmvc 的跨域设置
<!-- API 接口跨域配置 -->
<mvc:cors>
<mvc:mapping path="/**"
allowed-origins="*"
allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
allow-credentials="true" />
</mvc:cors>
分享到:
相关推荐
然而,在现代Web开发中,由于前后端分离的需求,跨域请求变得常见。Spring MVC提供了多种解决跨域问题的方法,其中两种常见的策略是使用CORS(Cross-Origin Resource Sharing)配置和Filter过滤器。 ### CORS配置 ...
SpringMVC AJAX 跨域请求处理方法实例详解 本文主要介绍了 SpringMVC AJAX 跨域请求处理方法实例详解,解决了 AJAX 跨域请求问题。下面是详细的知识点解释: 一、什么是 AJAX 跨域请求? AJAX 跨域请求是指在不同...
SpringMVC 跨域解决方案是指在 SpringMVC 框架中解决跨站 HTTP 请求(Cross-site HTTP request)的两种方案。跨域是指发起请求的资源所在域不同于请求指向资源所在域的 HTTP 请求。在前后端分离的开发方式中,跨域...
默认情况下,浏览器阻止跨域请求,但我们可以配置Spring MVC来允许特定来源的请求。这通常通过`@CrossOrigin`注解实现,可以应用于Controller类、方法或全局配置: ```java @CrossOrigin(origins = ...
当浏览器向服务器发送跨域请求时,会添加`Origin`头来表明请求来源。服务器响应时,通过设置`Access-Control-Allow-Origin`头来指定允许的来源。如果该头值包含请求来源,则浏览器允许跨域访问。 2. **SpringMVC中...
之前写过通过注释的方法解决跨域请求的方法,需要每次都在controll类使用注解,这次通过springmvc的拦截器解决: 继承SpringMVC的类HandlerInterceptor重写preHandle方法,这个方法会在到达 controll之前调用,如下 ...
**SpringMVC跨域解决方案** 跨域问题在Web开发中是一个常见的挑战,它涉及到浏览器的安全策略,限制了JavaScript从一个源向另一个源发起HTTP请求的能力。简单来说,如果请求的URL与当前页面的源(协议+域名+端口)...
具体来说,如果请求的URL与当前文档的URL在协议、域名或端口号上有所不同,那么这次请求就是跨域请求。 **为何会出现跨域需求?** 通常有以下两种常见场景: 1. **Web应用部署在不同的服务器上**:例如百度的不同...
Spring MVC提供了CORS(Cross-Origin Resource Sharing)配置来允许特定的跨域请求。 7. **Spring MVC与Ajax的结合**:Spring MVC支持JSON和XML等多种数据格式,这使得它与Ajax的集成非常方便。通过配置`...
例如,在 Apache 或 Nginx 的配置文件中,或者在你的后端框架(如 SSM,即 Spring、SpringMVC、MyBatis 的组合)中添加适当的响应头,如 "Access-Control-Allow-Origin",允许指定或通配符(*)的源访问。...
- `demo2`可能是对`demo1`的扩展,增加了CORS配置,允许跨域的Ajax请求访问服务端资源。 总结,通过Spring Boot结合Redis,我们可以实现高效的分布式Session共享,确保用户会话在多服务器环境下的一致性。同时,...
使用`@CrossOrigin`注解或配置CORS过滤器,可以处理跨域请求。 **10. 集成测试** SpringMVC提供MockMVC工具,可以在不启动服务器的情况下进行单元测试和集成测试。 **11. 源代码分析** 在提供的"code"目录下,可能...
此外,还可以配置Spring MVC的全局CORS策略,以更安全地管理跨域请求: ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry ...
在SpringMVC中,可以通过添加过滤器或者使用`@CrossOrigin`注解来启用CORS,以支持前端跨域请求。 5. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它将Java对象与数据库表对应,简化了数据库操作。...
在这个配置类中,`addCorsMappings`方法用于配置CORS映射,`/**`表示对所有路径开放跨域请求。 ### 实施步骤 1. 确保Spring Boot后端使用的是支持CORS特性的版本。 2. 根据需要选择使用@CrossOrigin注解还是全局...
本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行...即具有统一响应结构、 前后台数据流转机制(HTTP消息与Java对象的互相转化机制)、统一的异常处理机制、参数验证机制、Cors跨域请求机制以及鉴权机制。
主要介绍了快速解决跨域请求问题:jsonp和CORS,涉及jsonp和CORS的介绍,分享了前端 jQuery 写法,后端 SpringMVC 配置,后端非 SpringMVC 配置等相关内容,具有一定借鉴价值,需要的朋友可以参考下。
CORS(Cross-Origin Resource Sharing)是一种W3C标准,用于允许浏览器在接收到服务器返回的特定头部信息后,跨域请求资源。在Spring MVC中,我们可以使用`@CrossOrigin`注解或全局过滤器来配置CORS。 - **@Cross...