服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|

服务器之家 - 编程语言 - JAVA教程 - 详解Spring MVC CORS 跨域

详解Spring MVC CORS 跨域

2020-11-03 22:36小新是也 JAVA教程

本篇文章主要介绍了详解Spring MVC CORS 跨域 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

介绍

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

当页面发出跨域请求时:

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

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

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

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

使用@CrossOrigin注解

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

?
1
2
3
4
5
6
7
8
@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表示允许跨域的路径。

?
1
2
3
<mvc:cors>
 <mvc:mapping path="/**" allowed-methods="*"/>
</mvc:cors>

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

原文链接:http://www.cnblogs.com/chenchuxin/p/6602928.html

延伸 · 阅读

精彩推荐
  • JAVA教程使用Java代码将IP地址转换为int类型的方法

    使用Java代码将IP地址转换为int类型的方法

    这篇文章主要介绍了使用Java代码将IP地址转换为int类型的方法,这也是各大计算机考试和ACM以及面试的常见基础问题,需要的朋友可以参考下 ...

    zinss269144932020-01-02
  • JAVA教程Java中的static关键字全面解析

    Java中的static关键字全面解析

    这篇文章主要介绍了Java中的static关键字全面解析的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 ...

    海 子2162020-05-19
  • JAVA教程JAVA实现数字大写金额转换的方法

    JAVA实现数字大写金额转换的方法

    这篇文章主要介绍了JAVA实现数字大写金额转换的方法,涉及java针对字符串与数组的遍历与转换相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    鉴客2302019-12-26
  • JAVA教程深入解析Java的设计模式编程中建造者模式的运用

    深入解析Java的设计模式编程中建造者模式的运用

    这篇文章主要介绍了深入解析Java的设计模式编程中建造者模式的运用,同时文中也介绍了建造者模式与工厂模式的区别,需要的朋友可以参考下 ...

    Zhang_H2792020-03-27
  • JAVA教程java ClassLoader机制详细讲解

    java ClassLoader机制详细讲解

    ClassLoader一个经常出现又让很多人望而却步的词,本文将试图以最浅显易懂的方式来讲解 ClassLoader,希望能对不了解该机制的朋友起到一点点作用 ...

    java教程网5292020-05-26
  • JAVA教程轻松掌握Java单例模式

    轻松掌握Java单例模式

    这篇文章主要帮助大家轻松掌握Java单例模式 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    断了联系1842020-06-21
  • JAVA教程JAVA实现caesar凯撒加密算法

    JAVA实现caesar凯撒加密算法

    Carsar加密算法是最简单的加密算法,原理是把一个字母在字母表中移动相应的位置,比如输入a,将其移动3位,经过Caesar加密后输出的d,位置可以循环移动...

    java教程网2252019-10-30
  • JAVA教程MyEclipse到期破解代码分享

    MyEclipse到期破解代码分享

    前几天有个小伙伴咨询,使用的时候一直说myeclipse已过期,需要购买,如何解决?可以去网上搜搜注册码,但作为程序猿这么做简直太无趣,看看我们自己来...

    hebedich2482019-12-04