详解Spring MVC CORS 跨域

 更新时间:2017年05月31日 15:11:47   作者:小新是也  
本篇文章主要介绍了详解Spring MVC CORS 跨域 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

介绍

跨域CORS,全称是"跨域资源共享"(Cross-origin resource sharing)

当页面发出跨域请求时:

1、简单请求(先简单理解为正常的get/post吧):

浏览器将请求的地址添加到header的Origin里面发送请求。接下来就看后台如何处理了。

2、非简单请求(姑且简单理解成Content-Type:"application/json"吧):

浏览器会先发个预检请求(preflight),也就是OPTIONS请求。服务器返回是否许可访问和支持的请求方式,浏览器再决定是否发出请求。

使用@CrossOrigin注解

用法很简单,只需在controller或者方法上面添加注解即可。在controller上用表示整个controller下的方法都支持跨域

@Controller
public class HomeController {
 @CrossOrigin
 @RequestMapping("/")
 public String Index() {
  return "Index";
 }
}

参数说明

  • origins: 表示允许跨域的地址
    前面的http(s)必须加,默认*表示全部
  • value: origins的别名
  • allowedHeaders: 在OPTIONS请求中,返回的Access-Control-Allow-Headers
    这个参数限定了客户端只能发送的header参数,不在此范围内浏览器阻止发出请求。默认*
  • exposedHeaders: 对应Access-Control-Expose-Headers
    该字段可选。CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他字段,就必须在Access-Control-Expose-Headers里面指定。上面的例子指定,getResponseHeader('FooBar')可以返回FooBar字段的值。
  • methods: 允许的请求方法,像get,post这些
  • allowCredentials: 对应Access-Control-Allow-Credentials 该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。
  • maxAge: 对应Access-Control-Max-Age 用来指定预检请求的有效期(秒),在有效期内不在发送预检请求直接请求。默认1800秒,即30分钟。

使用spring配置文件

这个适合用于全局的配置,对应的字段跟CrossOrigin差不多。path表示允许跨域的路径。

<mvc:cors>
 <mvc:mapping path="/**" allowed-methods="*"/>
</mvc:cors>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java设计模式之代理模式

    Java设计模式之代理模式

    这篇文章介绍了Java设计模式之代理模式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Java编程实现获取当前代码行行号的方法示例

    Java编程实现获取当前代码行行号的方法示例

    这篇文章主要介绍了Java编程实现获取当前代码行行号的方法,结合实例形式分析了java基于StackTraceElement对象实现获取代码行号的相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Spring MVC全局异常处理和单元测试_动力节点Java学院整理

    Spring MVC全局异常处理和单元测试_动力节点Java学院整理

    本篇文章主要介绍了Spring MVC全局异常处理和单元测试,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Java中图像锐化操作的方法详解

    Java中图像锐化操作的方法详解

    这篇文章主要给大家介绍了关于Java中图像锐化操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java Class 解析器实现方法示例

    Java Class 解析器实现方法示例

    这篇文章主要通过对class文件的分析,介绍了Java Class 解析器实现方法示例,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • SpringMVC+ZTree实现树形菜单权限配置的方法

    SpringMVC+ZTree实现树形菜单权限配置的方法

    本篇文章主要介绍了SpringMVC+ZTree实现树形菜单权限配置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Java搜索与图论之DFS和BFS算法详解

    Java搜索与图论之DFS和BFS算法详解

    DFS指在进行算法运算时,优先将该路径的当前路径执行完毕,执行完毕或失败后向上回溯尝试其他途径。BFS指在进行算法运算时,优先将当前路径点的所有情况罗列出来,然后根据罗列出来的情况罗列下一层。本文介绍了二者的实现与应用,需要的可以参考一下
    2022-11-11
  • 深入了解java中的string对象

    深入了解java中的string对象

    这篇文章主要介绍了java中的string对象,String对象是Java中使用最频繁的对象之一,所以Java开发者们也在不断地对String对象的实现进行优化,以便提升String对象的性能。对此感兴趣的朋友跟随小编一起看看吧
    2019-11-11
  • SpringBoot中的条件装配方法

    SpringBoot中的条件装配方法

    在实际的项目开发中,我们往往需要根据不同的环境做出不同的配置,例如:在开发环境下,我们会使用内存数据库以便快速启动服务并进行开发调试,在test环境、生产环境,会使用对应环境的数据库,这篇文章主要介绍了SpringBoot中的条件装配方法,需要的朋友可以参考下
    2024-08-08
  • Spring Boot配置内容加密实现敏感信息保护

    Spring Boot配置内容加密实现敏感信息保护

    之前我们讲过的配置相关知识都是Spring Boot原生就提供的,而今天我们将介绍的功能并非Spring Boot原生就支持,但却非常有用:配置内容的加密
    2021-11-11

最新评论