4.6 CORS 支持跨域

news2024/10/7 20:31:47

CORS (Cross-Origin Resource Sharing )是由 W3C 制定的一种跨域资源共享技术标准,其目的就是为了解决前端的跨域请求。在 Java EE 开发中,最常见的前端跨域请求解决方案是 JSONP ,但JSONP 只支持 GET 请求,这是 个很大的缺陷,而 CORS 则支持多种 HTTP 请求方法。

1. 某个请求实现跨域:@CrossOrigin

import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class Test1Controller {

    @CrossOrigin(value = "http://localhost:8081", maxAge = 1800, allowedHeaders = "*")
    @PostMapping("/hello")
    public AjaxResult hello() {
        return AjaxResult.success("请求成功");
    }
}

代码解释:

  • 注解@CrossOrigin中的value表示支持的域,这里表示来自http://localhost:8081域的请求是支持跨域的。
  • maxAge表示探测请求的有效期,在前面的讲解中,读者已经了解到对于DELETE、PUT请求或者有自定义头信息的请求,在执行过程中会先发送探测请求,探测请求不用每次都发送,可以配置一个有效期,有效期过了之后才会发送探测请求。这个属性默认是1800秒,即30分钟。
  • allowedHeaders表示允许的请求头,*表示所有的请求头都被允许。

8081跨域访问效果
在这里插入图片描述
8082跨域访问效果
在这里插入图片描述

2. 全局配置:@CrossOrigin

@Configuration
public class ResourcesConfig implements WebMvcConfigurer {
    /**
     * 跨域配置
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/book/**")
                .allowedHeaders("*")
                .allowedMethods("*")
                .maxAge(10)
                .allowedOrigins("http://localhost:8083");
    }
}

代码解释:

  • 全局配置需要自定义类实现WebMvcConfigurer接口,然后实现接口中的addCorsMappings方法
  • 在addCorsMappings方法中,addMapping表示对哪种格式的请求路径进行跨域处理allowedHeaders表示允许的请求头,默认允许所有的请求头信息;allowedMethods表示允许的请求方法,默认是GET、POST和HEAD,*表示支持所有的请求方法;maxAge表示探测请求的有效期,单位秒allowedOrigins表示支持的域
package com.ruoyi.web.controller.test;

import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/book")
public class BookController {
    @PostMapping("/hello")
    public AjaxResult hello() {
        return AjaxResult.success("book请求成功");
    }
}

8081跨域访问效果
在这里插入图片描述
8082跨域访问效果
在这里插入图片描述
对非要求的请求路径进行跨域
在这里插入图片描述

registry.addMapping设置为全部,测试

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/*")
                .allowedHeaders("*")
                .allowedMethods("*")
                .maxAge(10)
                .allowedOrigins("http://localhost:8081");
    }

在这里插入图片描述

ruoyi

@Configuration
public class ResourcesConfig implements WebMvcConfigurer
{
    /**
     * 跨域配置
     */
    @Bean
    public CorsFilter corsFilter()
    {
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        // 设置访问源地址
        config.addAllowedOriginPattern("http://localhost:8081");
        // 设置访问源请求头
        config.addAllowedHeader("*");
        // 设置访问源请求方法
        config.addAllowedMethod("*");
        // 有效期 1800秒
        config.setMaxAge(1800L);
        // 添加映射路径,拦截一切请求
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/test/**", config);
        // 返回新的CorsFilter
        return new CorsFilter(source);
    }
}

/test,8081跨域访问效果
在这里插入图片描述
/test,8082跨域访问效果
在这里插入图片描述
/book,非跨域请求路径
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1610763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之排序了如指掌(三)

目录 题外话 正题 快速排序 Hoare法 Hoare法思路 Hoare法代码详解 挖坑法 挖坑法思路 挖坑法代码 前后指针法 前后指针法思路 前后指针法代码 小结 题外话 我们接着把没有写完的排序内容完成,快速排序其实大同小异,大家好好把思路整理一下 正题 快速排序 快速排序一…

HarmonyOS 状态管理

在声明式 UI 框架中,数据的改变触发 UI 的重新渲染。在 ArkUI 中不是所有数据的变化都会触发 UI 重新渲染,只有 状态变量 才会引起 UI 重新渲染。 状态变量 状态变量: 指被状态装饰器装饰的变量,只有这种变量的改变才会引起 UI …

(2022级)成都工业学院数据库原理及应用实验七: 数据库安全

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、成品仅提供参考 3、如果成品不满足你的要求,请寻求其他的途径 运行环境 window11家庭版 Navicat Premium 16 Mysql 8.0.36 实验要求 1、创建数据库hospital,在hospital数据库中创建科室表De…

第一个STM32F767IGT6核心板

一. 制作原因 起先是因为参加计算机设计大赛准备的板子,其作用是连接OV5640摄像头来识别车牌号,主要外设有摄像头,SDRAM,网口等。 二. 原理图和PCB 原理图 PCB 三. 测试 1. 测试SDRAM功能 按下按键我们可以在串口中看到内存…

LTspice/Simplis仿真代码使用

LTspice/Simplis仿真代码使用 HI uu们 HI uu们,关注我的uu经常看到我上面贴了很多仿真代码,但是不知道怎么用. 今天来介绍下仿真代码怎么用, 比如说,我们用OP07做了一个跟随器,如图1所示. 图1:OP07跟随器 他的仿真代码非常简单,如下所示 XU1 N002 vout N001 N003 vout LT…

【Linux】详解进程通信中信号量的本质同步和互斥的概念临界资源和临界区的概念

一、同步和互斥的概念 1.1、同步 访问资源在安全的前提下,具有一定的顺序性,就叫做同步。在多道程序系统中,由于资源有限,进程或线程之间可能产生冲突。同步机制就是为了解决这些冲突,保证进程或线程之间能够按照既定…

都以为他是自杀20年后遗书曝光才明白张国荣的离世不简单

在时光的长河中,有些瞬间如同流星划过天际,短暂却又璀璨夺目。二十年前的那个春天,一个灵魂从这个喧嚣世界悄然离去,留下无尽的叹息与疑问。他就是张国荣——一位被誉为“风华绝代”的巨星。许多人曾认定他的离开是一场悲剧性的自…

计算机网络 -- 多人聊天室

一 程序介绍和核心功能 这是基于 UDP 协议实现的一个网络程序,主要功能是 构建一个多人聊天室,当某个用户发送消息时,其他用户可以立即收到,形成一个群聊。 这个程序由一台服务器和n个客户端组成,服务器扮演了一个接受…

element-ui合计逻辑踩坑

element-ui合计逻辑踩坑 1.快速实现一个合计 ​ Element UI所提供的el-table中提供了方便快捷的合计逻辑实现: ​ https://element.eleme.cn/#/zh-CN/component/table ​ 此实现方法在官方文档中介绍详细,此处不多赘述。 ​ 这里需要注意&#xff0c…

Don‘t fly solo! 量化之路,AI伴飞

在投资界,巴菲特与查理.芒格的神仙友谊,是他们财富神话之外的另一段传奇。巴菲特曾这样评价芒格:他用思想的力量拓展了我的视野,让我以火箭的速度,从猩猩进化到人类。 人生何幸能得到一知己。如果没有这样的机缘&…

每日学习笔记:C++ STL算法之容器元素变序

目录 反转元素次序 reverse(beg, end) reverse_copy(srcBeg, srcEnd, destEnd) 旋转元素 旋转:rotate(beg, newBeg, end) 复制同时旋转:rotate_copy(srcBeg, srcNewBeg, srcEnd, destBeg) 对元素做排列组合情况列举与切换 next_permutation(beg, …

国产化里程碑:明道云HAP私有部署版获信创评估证书,荣登会员单位

近期,明道云HAP私有部署版荣获信创产品评估证书,这一成就不仅标志着我们在信创领域的深入布局和持续努力获得了行业的广泛认可,也是对我们积极拥抱和推动国产化技术发展的肯定。更值得一提的是,我们还被授予“成员单位”的称号&am…

基于通达信---做T专用算法

什么是做T? 股票做T是股票市场中常见的一种投资策略,也就是股票进行T+0操作,通过当天买进的股票,在当天卖出,是股市中常见的一种超短线的操作。其中T就是指交易日,利用交易日中的股票涨跌来赚取差价。股票做T常见的类型就是正T和倒T。 1、正T 股票做正t就是指先买后卖,…

Rokid AR Lite空间计算套装发布,中国空间计算踏上差异化领先之路

动动手指、动动眼睛就可以“操控一切”,这种颇具科幻感、未来感的交互方式,令许多人感叹“未来已来”。而这令人震撼的变革背后,正是空间计算技术的迅猛崛起与广泛应用,使得这种曾经只存在于想象中的交互方式,如今正逐…

快速访问github

修改本地hosts文件 GitHub访问慢的原因在于域名解析,通过修改本地的hosts文件,将远程DNS解析改为本地DNS解析。 fang 步骤1:打开hosts文件(没有就创建) host所在位置: C:\Windows\System32\drivers\etc…

linux jenkins 2.89.1 安装部署 持续构建svn下maven项目并部署到tomcat

从这边博文可以学习到: jenkins的安装修改主目录初始化新建任务,构建第一个maven项目将构建完成的项目部署到tomcat Jenkins的安装相当简单,只需要从官网下载war包,放入tomcat,运行tomcat就可以访问Jenkins了 准备工作…

PyCharm,终端conda环境无法切换的问题(二个解决方案)

问题 PyCharm终端,环境切换无效,默认始终为base 解决一 Settings->Tools->Terminal->ShellPath,将powershell修改为cmd.exe 解决二 conda config --show在输出中找到 auto_activate_base 的行,发现被设置为 true&#x…

数据结构-双链表(图解)

目录 双链表(Double-Linked List)的概念与基本特性 一、双链表的基本组成 二、双链表的主要特性 三、双链表的操作 代码展示 malloc开辟函数 解析 初始化 解析 头插 解析 尾插 解析 头删 解析 尾删 解析 pos之后插入 解析 pos删除 …

抖音小店无货源怎么做?教你新店快速起店新攻略,你还在等什么?

大家好,我是电商花花。 从我关注抖音小店这个风口到现在已经有很长时间了,从了解到实操到复盘,陆陆续续将多家单店店铺月营业额达到数百万。 目前团队运营着80多家店铺,人均管理3-5个店铺,大部分店铺月营业额都在5W-…

【C++】飞机大战项目记录

源代码与图片参考自《你好编程》的飞机大战项目,这里不进行展示。 本项目是仅供学习使用的项目 飞机大战项目记录 飞机大战设计报告1 项目框架分析1.1 敌机设计:1.2 玩家飞机控制:1.3 子弹发射:1.4 游戏界面与互动:1.5…