`
Luob.
  • 浏览: 1591886 次
  • 来自: 上海
社区版块
存档分类
最新评论

SpringMVC 跨域请求

mvc 
阅读更多
方法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>
分享到:
评论

相关推荐

    springmvc跨域处理和过滤器方式跨域处理主要代码

    然而,在现代Web开发中,由于前后端分离的需求,跨域请求变得常见。Spring MVC提供了多种解决跨域问题的方法,其中两种常见的策略是使用CORS(Cross-Origin Resource Sharing)配置和Filter过滤器。 ### CORS配置 ...

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

    SpringMVC AJAX 跨域请求处理方法实例详解 本文主要介绍了 SpringMVC AJAX 跨域请求处理方法实例详解,解决了 AJAX 跨域请求问题。下面是详细的知识点解释: 一、什么是 AJAX 跨域请求? AJAX 跨域请求是指在不同...

    详解SpringMVC解决跨域的两种方案

    SpringMVC 跨域解决方案是指在 SpringMVC 框架中解决跨站 HTTP 请求(Cross-site HTTP request)的两种方案。跨域是指发起请求的资源所在域不同于请求指向资源所在域的 HTTP 请求。在前后端分离的开发方式中,跨域...

    基于Spring和Spring MVC实现可跨域访问的REST服务

    默认情况下,浏览器阻止跨域请求,但我们可以配置Spring MVC来允许特定来源的请求。这通常通过`@CrossOrigin`注解实现,可以应用于Controller类、方法或全局配置: ```java @CrossOrigin(origins = ...

    SpringMVC CORS跨域测试包

    当浏览器向服务器发送跨域请求时,会添加`Origin`头来表明请求来源。服务器响应时,通过设置`Access-Control-Allow-Origin`头来指定允许的来源。如果该头值包含请求来源,则浏览器允许跨域访问。 2. **SpringMVC中...

    利用SpringMVC过滤器解决vue跨域请求的问题

    之前写过通过注释的方法解决跨域请求的方法,需要每次都在controll类使用注解,这次通过springmvc的拦截器解决: 继承SpringMVC的类HandlerInterceptor重写preHandle方法,这个方法会在到达 controll之前调用,如下 ...

    SpringMVC的跨域解决方案.docx

    **SpringMVC跨域解决方案** 跨域问题在Web开发中是一个常见的挑战,它涉及到浏览器的安全策略,限制了JavaScript从一个源向另一个源发起HTTP请求的能力。简单来说,如果请求的URL与当前页面的源(协议+域名+端口)...

    SpringMvc的跨域解决方案_2.docx

    具体来说,如果请求的URL与当前文档的URL在协议、域名或端口号上有所不同,那么这次请求就是跨域请求。 **为何会出现跨域需求?** 通常有以下两种常见场景: 1. **Web应用部署在不同的服务器上**:例如百度的不同...

    使用springmvc整合ajax请求demo代码示例

    Spring MVC提供了CORS(Cross-Origin Resource Sharing)配置来允许特定的跨域请求。 7. **Spring MVC与Ajax的结合**:Spring MVC支持JSON和XML等多种数据格式,这使得它与Ajax的集成非常方便。通过配置`...

    pdfjs 跨域预览文件(完整版t)

    例如,在 Apache 或 Nginx 的配置文件中,或者在你的后端框架(如 SSM,即 Spring、SpringMVC、MyBatis 的组合)中添加适当的响应头,如 "Access-Control-Allow-Origin",允许指定或通配符(*)的源访问。...

    Spring Boot Redis Session 共享(Ajax 跨域)

    - `demo2`可能是对`demo1`的扩展,增加了CORS配置,允许跨域的Ajax请求访问服务端资源。 总结,通过Spring Boot结合Redis,我们可以实现高效的分布式Session共享,确保用户会话在多服务器环境下的一致性。同时,...

    SpringMVC部分【第2天相关资料及源代码】.

    使用`@CrossOrigin`注解或配置CORS过滤器,可以处理跨域请求。 **10. 集成测试** SpringMVC提供MockMVC工具,可以在不启动服务器的情况下进行单元测试和集成测试。 **11. 源代码分析** 在提供的"code"目录下,可能...

    在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法

    此外,还可以配置Spring MVC的全局CORS策略,以更安全地管理跨域请求: ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry ...

    springmvc+hibernate rest 架构

    在SpringMVC中,可以通过添加过滤器或者使用`@CrossOrigin`注解来启用CORS,以支持前端跨域请求。 5. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它将Java对象与数据库表对应,简化了数据库操作。...

    解决Vue调用springboot接口403跨域问题

    在这个配置类中,`addCorsMappings`方法用于配置CORS映射,`/**`表示对所有路径开放跨域请求。 ### 实施步骤 1. 确保Spring Boot后端使用的是支持CORS特性的版本。 2. 根据需要选择使用@CrossOrigin注解还是全局...

    Maven整合rest+SpringMvc实例

    本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行...即具有统一响应结构、 前后台数据流转机制(HTTP消息与Java对象的互相转化机制)、统一的异常处理机制、参数验证机制、Cors跨域请求机制以及鉴权机制。

    快速解决跨域请求问题:jsonp和CORS

    主要介绍了快速解决跨域请求问题:jsonp和CORS,涉及jsonp和CORS的介绍,分享了前端 jQuery 写法,后端 SpringMVC 配置,后端非 SpringMVC 配置等相关内容,具有一定借鉴价值,需要的朋友可以参考下。

    ssm框架跨域配置架包及配置文件

    CORS(Cross-Origin Resource Sharing)是一种W3C标准,用于允许浏览器在接收到服务器返回的特定头部信息后,跨域请求资源。在Spring MVC中,我们可以使用`@CrossOrigin`注解或全局过滤器来配置CORS。 - **@Cross...

Global site tag (gtag.js) - Google Analytics