`

Spring MVC 实现跨域资源 CORS

 
阅读更多

 

 

什么是 CORS ?

跨来源资源共享(Cross-origin resource sharing)是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。用 CORS 可以让网页设计师用一般的 XMLHttpRequest,这种方式的错误处理比 JSONP 要来的好。
以上内容摘自维基百科

用人话来解释就是:JavaScript 或 Cookies 不允许访问不同域名下面的内容,当我们想在两个不同域名之前相互通信的话,我们就要考虑跨域这个问题,这也是在通往一个优秀的前端的路上必不可少的过程,如果你只会有 JSONP 的话,那真是令人伤感的,因为 JSONP 是不支持 POST 请求的,所以,在科技发展的今天突然出现了 CORS 这项技术,好像就不需要前端什么事情了,我们可以帮他搞定跨域这个头疼的问题。其实是很简单的一项技术。

怎么使用呢?

据我所知道的是有三种方式:Tomcat 配置、拦截器设置响应头和使用 Spring MVC 4.2+

设置 Tomcat 这种方式就是引用别人封装好的两个 jar 包,配置一下web.xml就行了。我也并不推荐,这里放两个我在网上找到的配置相关文章,感兴趣可以看看。

  1. CORS Filter Installation
  2. tomcat下CORS(跨域资源共享) 的配置

拦截器设置响应头 这种方式原理就是利用拦截器在方法执行前,我们增加请求的响应头,用来支持跨域请求。这种方案是可行的,大部分都是采用这种方案。我当时也是打算采用这种方案,直到我发现原来 Spring 框架已经支持了 CORS 之后,就果断采用了 Spring 框架的内置的方案,其实原理也是一样的。

直接配置即可:

    <!-- API 接口跨域配置 -->
<mvc:cors>  
    <mvc:mapping path="/api/**"
        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>

当然你也可以在Controller上使用 @CrossOrigin 注解。类似于这样:

cors.png

到这里,支持 CORS 跨域请求就配置完成了,这里需要注意的地方是,你的Spring MVC 版本必须是 4.2 及以上
官方博客:CORS support in Spring Framework

下一篇文章是:从零开始学 Java - Spring 支持 CORS 请求踩的坑 ,我会讲讲我在升级 Spring MVC 版本的时候踩的坑,说多了都是泪。

分享到:
评论

相关推荐

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

    这篇博客“基于Spring和Spring MVC实现可跨域访问的REST服务”深入探讨了如何使用这两个流行的Java框架来创建这样的服务。Spring作为核心框架提供依赖注入和整体架构支持,而Spring MVC作为其Web模块,专门用于构建...

    spring4.3 实现跨域CORS的方法

    在 Spring 4.3 框架中,实现跨域 CORS 需要在 Controller 中添加 @CrossOrigin 注解,并在 Spring MVC 配置文件中添加 CORS 配置。 首先,在 Controller 中添加 @CrossOrigin 注解,以允许跨域请求。例如: ```java...

    详解Spring MVC CORS 跨域

    CORS 跨域是 Web 开发中一个非常重要的概念,Spring MVC 提供了多种方式来实现 CORS 跨域,包括使用 `@CrossOrigin` 注解和配置文件。通过使用 CORS 跨域,我们可以实现不同域名下的资源共享,提高 Web 应用程序的...

    Spring MVC 与 CORS跨域的详细介绍

    Spring MVC 与 CORS 跨域的详细介绍 本文对 Spring MVC 与 CORS 跨域的详细介绍,包括 CORS 的知识点和如何在 Spring MVC 中配置 CORS。 CORS 简介 同源策略(same origin policy)是浏览器安全的基石。在同源...

    spring MVC cors跨域实现源码解析

    Spring MVC CORS(跨域资源共享)实现源码解析 跨域资源共享(CORS)是一种机制,允许Web应用程序在浏览器中向不同源(域名、协议或端口)发送Ajax请求。根据W3C规范,如果请求的源与服务器资源的源不一致,就被...

    cors-filter-1.7.jar spring解决跨域问题 java

    本篇将详细讲解如何利用Spring解决跨域问题,以及如何使用`cors-filter-1.7.jar`和`java-property-utils-1.9.1.jar`这两个库来辅助实现。 一、Spring解决跨域问题的基本原理 1. CORS定义:跨域是指浏览器遵循同源...

    spring MVC uploadify

    注意,为了实现跨域预览,可能需要在服务器端添加CORS配置。 总结起来,结合Spring MVC的`multipartResolver`和uploadify,我们可以实现一个高效、用户友好的图片上传和预览功能。这涉及到后端文件上传的处理、前端...

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

    在Spring MVC中,跨域问题通常发生在Web应用中,当客户端(如JavaScript的Ajax请求)尝试从一个域名访问另一个域名的资源时。由于浏览器的安全策略,这种行为默认是被禁止的,这被称为“同源策略”。然而,在现代Web...

    spring-mvc-showcase-case1-client

    2. 安全性:考虑跨域资源共享(CORS)策略,确保前后端通信的安全。 3. 数据交互:定义RESTful API接口,使用AngularJS的$http或$resource服务进行数据交换。 4. 路由管理:AngularJS的$routeProvider或ui-router...

    在 Spring Web MVC 环境下使用 Dojo

    5. **数据绑定**:Dojo 控件如 DataGrid 可以通过 JSONP 或 CORS 从 Spring MVC 提供的 RESTful API 获取数据。确保服务器端支持跨域请求,或设置响应头以允许 JSONP 请求。 **四、DataGridTest 示例** 在你提供的...

    过滤器或拦截器跨域CORS处理

    "过滤器"和"拦截器"是两种常用的解决策略,本篇将详细解释如何使用它们处理跨域CORS(Cross-Origin Resource Sharing)。 首先,让我们理解什么是CORS。CORS是一种W3C标准,它允许浏览器和服务器通过添加特定的HTTP...

    spring mvc 3.2 rest配置 文件

    7. **CORS支持** - 对于跨域资源共享(CORS),Spring MVC提供了`CorsRegistry`和`CorsConfiguration`来配置允许哪些来源进行访问。 8. **Validation** - 使用JSR-303/JSR-349提供的注解进行数据验证,例如`@Not...

    SpringBoot 中实现跨域的5种方式.pdf

    第二种方式是通过重写WebMvcConfigurer接口中的addCorsMappings方法,这样可以在Spring MVC层面上实现全局跨域。WebMvcConfigurer允许用户自定义具体的MVC配置,这里的配置与CorsFilter类似,但更为灵活,可以通过...

    Spring实现处理跨域请求代码详解

    Spring实现处理跨域请求代码详解是指在Spring框架中如何处理跨域请求,以便让客户端可以跨域访问服务器端的资源。本文将详细介绍跨域请求的概念、原因、解决方案,并提供实用的代码示例。 一、什么是跨域请求? ...

    CORS 跨域配置和jar文件

    总结,CORS跨域配置是解决前后端跨域问题的关键,而在Java环境中,我们可以通过编写Filter或使用Spring MVC的注解来实现。配合jar文件,可以将这些配置部署到服务器,为Web应用提供跨域支持。理解并正确运用CORS,能...

    Spring MVC中自带的跨域问题解决方法

    本文将深入探讨Spring MVC如何解决跨域问题,并通过一个具体的例子来展示解决方案。 首先,理解什么是跨域。跨域是由于浏览器的同源策略(Same-origin policy)导致的一种安全机制。同源策略规定,JavaScript只能...

    springboot 跨域请求

    Spring Boot提供了多种方式来实现跨域支持,其中最常用的是通过CORS(Cross-Origin Resource Sharing,跨源资源共享)机制。下面我们将详细探讨如何在Spring Boot中配置CORS,以及它与MyBatis框架的集成。 首先,...

    使用Spring CROS解决项目中的跨域问题详解

    使用Spring CROS解决项目中的跨域问题详解 在Web开发中,跨域问题是一个常见的烦恼,特别是在前后端分离的项目中。跨域问题的出现是因为浏览器的同源策略限制,导致不同域名之间无法共享资源。为了解决这个问题,...

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

    跨域是指发起请求的资源所在域不同于请求指向资源所在域的 HTTP 请求。在前后端分离的开发方式中,跨域问题经常出现,例如前端在本地进行开发,并向远程服务器上部署的后端发送请求。 跨域的应用情景 在前后端分离...

Global site tag (gtag.js) - Google Analytics