前后端分离项目遇到的跨域问题解决方案(后端为主)

news2024/11/26 9:28:03

文章目录

  • 什么是跨域问题?
    • 第一种方式 ⇒ 注解解决方案:
    • 第二种方式 ⇒ 使用 CorsFilter 方法解决:
    • 第三种方式 ⇒ 实现 WebMvcConfigure 接口,添加映射(个人推荐)

什么是跨域问题?

先说问题:
在这里插入图片描述
在前后端接口设置正常的情况下,却不能正常使前后端进行通讯。这是为什么?就产生了以下问题:跨域。

跨域(Cross-Origin Resource Sharing,简称 CORS)是一种安全策略用于限制一个域的网页如何与另一个域的资源进行交互。这是浏览器实现的同源策略(Same-Origin Policy)的一部分,旨在防止恶意网站通过一个域的网页访问另一个域的敏感数据。

由于浏览器实施的同源策略(Same Origin Policy),这是一种基本的安全协议,它确保了浏览器的稳定运行。没有同源策略,浏览器的许多功能可能无法正常工作。整个Web体系建立在同源策略之上,浏览器是这一策略的具体实现。该策略禁止来自不同域的JavaScript脚本与另一个域的资源进行交互。所谓同源,指的是两个页面必须具有相同的协议(protocol)、域名(host)和端口号(port)

第一种方式 ⇒ 注解解决方案:

我们需要在方法前面,加上注解 @CorsFilter 注解,即可解决。(注意!注意!是方法,而不是类上面哦 !!!!)

第二种方式 ⇒ 使用 CorsFilter 方法解决:

代码如下:

在这里插入图片描述

@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter(){
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.addAllowedOrigin("*");

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",corsConfiguration);

        return new org.springframework.web.filter.CorsFilter(source);
    }

}

第三种方式 ⇒ 实现 WebMvcConfigure 接口,添加映射(个人推荐)

在这里插入图片描述

代码如下:

package com.xiao.Config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfiguration implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("*")
                .allowedHeaders("*")
                .allowCredentials(true) // 允许保存到 cookie
                .maxAge(3600);          // cookie 保存的时间 xx 秒
    }
}

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

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

相关文章

【软件流程】项目开发管理制度(Doc文件)

项目开发管理总体流程 一、总则 二、阶段成果 三、岗位设置 四、项目立项 五、项目计划与监控 六、需求分析 七、总体设计 八、详细设计 九、项目实现 十、项目测试 十一、用户培训 十二、系统上线 十三、系统验收 十四、产品维护 十五、源码和文档 十六、质量检…

Gitee镜像关联GitHub仓库

申请 GitHub 私人令牌 GitHub 私人令牌用于授予 Gitee 读写 Github 仓库的权限。 1)登录GitHub,通过 个人头像 > Settings > 下拉左侧菜单栏进入 Developer settings。 2)Personal access tokens > Tokens(classic) > Generate …

[数据集][目标检测]街道乱堆垃圾检测数据集VOC+YOLO格式94张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):94 标注数量(xml文件个数):94 标注数量(txt文件个数):94 标注类别数…

Spring Security 原理、源码解析及进阶

文章目录 参考文献 1、信息安全基础1. CIA 三要素2. Authentication Vs. Authorization3. RBAC模型 2、Spring Security1. Spring Security 简介2. Spring Security 架构核心2.1 FilterChain (Servlet)2.2 [DelegatingFilterProxy](https://docs.spring.io/spring-security/ref…

基于DPU与SmartNIC的K8s Service解决方案

1. 方案背景 1.1. Kubernetes Service介绍 Kubernetes Service是Kubernetes中的一个核心概念,它定义了一种抽象,用于表示一组提供相同功能的Pods(容器组)的逻辑集合,并提供了一种方式让这些Pods能够被系统内的其他组…

5、Django Admin后台移除“删除所选”操作

默认情况下,Django Admin后台的listview模型列表页,会有一个Delete Selected删除所选操作。假设你需要再从Hero管理模型中移除该删除操作。 ModelAdmin.get_actions方法可以返回所有的操作方法。通过覆盖此方法,移除其中delete_selected方法…

uni-app 获取当前位置的经纬度以及地址信息

文章目录 uni.getLocation(objc)获取经纬度和地址调试结果问题 uni-app 获取当前位置的经纬度以及地址信息 uni.getLocation(objc) uni-app官方文档定位API: uni.getLocation(OBJECT) uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度&…

Easy-Paas 功能演示

1.登录 http://192.168.11.10:8100/web 账号:admin 密码:admin 2.主页

阿里巴巴商品搜索API返回值中的图片与详情链接

在使用阿里巴巴(Alibaba)的商品搜索API时,通常返回的JSON或其他格式的数据中会包含商品的相关信息,如标题、价格、图片链接、详情页链接等。这些链接(特别是图片和详情页的链接)通常设计为直接可用的URL&am…

buildroot构建根文件系统

目录 嵌入式系统1. Bootloader(引导程序,如U-Boot)2. Linux内核3. 根文件系统 根文件系统使用buildroot编译文件系统Buildroot目录简介选择配置文件Buildroot其他分析 嵌入式系统 嵌入式系统的三大部分:bootloader(如…

Ceph RBD使用

CephRBD使用 一、RBD架构说明二、RBD相关操作1、创建存储池2、创建img镜像2.1 创建镜像2.1.2 查看镜像详细信息2.1.3 镜像其他特性2.1.4 镜像特性的启用和禁用 3、配置客户端使用RBD3.1 客户端配置yum源3.2 客户端使用admin用户挂载并使用RBD3.2.1 同步admin账号认证文件3.2.2 …

安数云助力某省移动部署全省云安全资源池

随着云计算技术的拓展,安全运维的兴起以及5G新技术的试点应用,传统烟囱式产品堆砌的安全解决方案已难以满足各新兴业务的安全保障需求。用户大部分业务逐步迁移到了云上,所有资源都以虚拟化的形态存在,以达到集中式的管理。 云安全…

MIT6.S081最详解析与归纳——lab11:network driver

Lab11主题:network driver (一)xv6网络协议栈(二)networking(1)e1000_transmit(2)e1000_recv (三)完结感想 (一)xv6网络协…

股指期货交割手续费怎么算?

股指期货交割手续费是投资者在股指期货合约到期进行交割时必须支付的费用,主要用于覆盖交易所和期货公司的运营成本。其计算方式与开仓、平仓手续费相似,但标准有所不同。#股指期货# 要熟悉股指期货的保证金和手续费计算,可以遵循以下公式&a…

浏览器百科:网页存储篇-Cookie应用实例(三)

1.引言 在前面的章节中,我们详细介绍了 Cookie 的基本概念、属性以及如何在 Chrome 浏览器中管理和调试 Cookie。理解这些理论知识之后,下一步是将其应用于实际开发中。在本篇文章中,我们将通过具体的代码示例,演示如何在网页中设…

并发集合:ConcurrentHashMap解析

1、ConcurrentHashMap 介绍 1.1、ConcurrentHashMap 概述 ConcurrentHashMap 是线程安全的HashMap,但最早的线程安全的HashMap 是 HashTable ,HashTable 现在已经弃用,因为它是使用synchronized 来保证线程安全,性能比较低&#…

无人机地理测绘技术详解

无人机地理测绘技术,作为现代测绘领域的一项重要革新,融合了无人机技术、遥感技术、地理信息系统(GIS)及全球定位系统(GPS)等多学科技术。该技术通过无人机搭载的高精度传感器,如相机、激光雷达…

Midjourney 图生图,真人二次元保持一致性,场景多元可选择

Midjourney 图生图,真人二次元保持一致性,场景多元可选择 Midjourney 拥有强大的图生图的功能,下面我们就来看一下,如何在我们的AceDataCloud网站上实现将照片切换成任意的二次元场景,同时保持人物的一致性。 注册链…

Azure Data Factory 多选选项集不受支持

在用ADF往外部推数据时,会碰到CRM的一种数据类型,多选下拉框,如下图中的 如果我们把多选字段输入源字段中,会得到如下的提示 查询官方文档,则有如下的说法 所以把值往外推就需要变通下,例如使用一个文本字段…

【一起学Rust | 框架篇 | Tauri2.0框架】command拆分模块

文章目录 前言1. 规划目录结构2. 编写command模块3. 注册command4. 编写utils模块 前言 上期曾提及,tauri 的 command 拆分模块乃是一种更为合理的方式。倘若将所有内容皆写入src-tauri/src/main.rs之中,将会致使代码难以进行维护,并且会显得…