前后端分离开发出现的跨域问题
先说说什么是跨域。
请求的URL地址中的协议、域名、端口号中的任意一个与当前URL不同就是跨域。
比如:
| 当前页面的URL | 请求的URL | 是否跨域 | 原因 |
| htttp://localhost:8080 | htttps://localhost:8080 | 是 | 协议不同 |
| htttp://localhostll:8080 | htttp://localhost:8080 | 是 | 域名不同 |
| htttp://localhost:8080 | htttp://localhost:8081 | 是 | 端口号不同 |
那么,为什么会出现跨域问题?
这都是因为浏览器的同源策略,为了保证浏览器安全,防止恶意的网站攻击,浏览器限制了从不同源之间的交互。在不同源的情况下,无法发送Ajax请求,如果请求,浏览器就会报错。
这里我的前端跑在8081端口下,后端跑在8080端口上 ,虽然协议和域名都相同,但是端口号不同,这种情况就是跨域问题了,所以前端页面向后端发送请求就报错了。
这里有三种解决方案,且都是后端的解决方案:
报错信息截图:

SpringBoot项目中解决跨域的3中方案:
第一种: 在目标方法上添加@CrossOrigin注解
添加注解后,重新启动项目,前端发送请求,后端接收到请求后并成功响应了请求。
第二种:开启跨域资源共享
跨域资源共享,Cross-Origin Resource Sharing,简拼为 CORS,是一种基于 HTTP 头信息的机制,通过允许服务器标识除了它自己以外的资源,从而实现跨域访问。
添加一个配置类就ok了。
@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter(){CorsConfiguration configuration = new CorsConfiguration();//设置允许的域名configuration.addAllowedOrigin("*");//设置原始头信息configuration.addAllowedHeader("*");//设置允许所有的请求方法跨域调用configuration.addAllowedMethod("*");//创建source对象UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();//添加映射路径source.registerCorsConfiguration("/**",configuration);return new CorsFilter(source);}
}
第三种: 实现WebMvcConfigurer接口,重写addCorsMappings方法
@Configuration
public class CorsConfiguration implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOriginPatterns("*").allowedMethods("GET","DELETE","PUT","POST","HEAD","OPTIONS").allowCredentials(true).allowedHeaders("*");}
}
相关文章:
前后端分离开发出现的跨域问题
先说说什么是跨域。 请求的URL地址中的协议、域名、端口号中的任意一个与当前URL不同就是跨域。 比如: 当前页面的URL请求的URL是否跨域原因htttp://localhost:8080htttps://localhost:8080是协议不同htttp://localhostll:8080htttp://localhost:8080是域名不同htt…...
水淼采集器-免费水淼采集器下载
在当今数字时代,随着信息的迅猛增长,许多网站管理员面临一个共同而具有挑战性的问题——如何在短时间内获取大量优质内容,以满足用户对信息的不断需求?水淼采集器,作为一个备受瞩目的解决方案,正成为许多人…...
[DASCTF 2023 0X401七月暑期挑战赛] web刷题记录
文章目录 EzFlask方法一 python原型链污染方法二 flask框架静态文件方法三 pin码计算 MyPicDisk方法一 字符串拼接执行命令方法二 phar反序列化 ez_cms EzFlask 考点:python原型链污染、flask框架理解、pin码计算 源码如下 import uuidfrom flask import Flask, re…...
Python超级详细的变量命名规则
Python 需要使用标识符给变量命名,其实标识符就是用于给程序中变量、类、方法命名的符号(简单来说,标识符就是合法的名字)。 Python 语言的标识符必须以字母、下画线(_)开头,后面可以跟任意数目…...
Zabbix 6 详细安装部署教程
目录 一、安装 MySQL 数据库 二、安装 zabbix 监控平台 三、编辑配置文件 四、启动服务 五、zabbix-web 安装 zabbix web 出图展示乱码问题解决方案 zabbix 的安装部署非常简单,官方提供了四种安装途径,分别是二进制 rpm 包安装方式、源码安装方…...
如何设置带有密码的excel只读模式?
Excel只读模式大家都不陌生,那大家知道带有密码的只读模式吗?今天给大家分享如何设置带有密码的只读模式。 打开excel文件,将文件进行【另存为】设置,然后停留在保存路径的界面中,我们点击下面的工具 – 常规选项 在常…...
企业人力资源公司抖音直播招聘断播怎么处理?
企业人力资源公司抖音直播招聘断播怎么处理? 最直接的处理方式就是进行抖音直播招聘报白,报白后在直播和视频中发布招聘和企业信息,不用担心被封禁和限制流量。 可以通过抖音直播进行招聘,也可以在视频中添加小程序,…...
数据治理与数据入表、数据交易有什么关系?
数据作为关键生产要素,其乘数效应的发挥离不开数据要素保有量的丰富程度、数据要素市场的发展成熟度以及数据要素应用路径的清晰度。财政部2023年8月21日发布了《企业数据资源相关会计处理暂行规定》,标志着企业数据资源入表迈出了0到1的关键一步。 与此…...
GitHub 2023排名前十的最佳开源项目
开源软件(OSS)彻底改变了当今软件开发的方式。在数百万个开源GitHub项目中,要找到最适合需求的开源项目可能会让人不知所措。 今天给大家列出2023年增长最快的前10个开源GitHub仓库。通过这些增长最快的开源项目,也可以从整体上了…...
抖音视频如何无水印下载,怎么批量保存主页所有视频没水印?
现在最火的短视频平台莫过于抖音,当我们刷到一个视频想下载下来怎么办?我们知道可以通过保存到相册的方式下载,但用这种方法下载的视频带有水印,而且有些视频不能保存到相册(这是视频作者设置了禁止下载)。…...
淘宝详情API接口:一键获取商品信息的实践探索
一、引言 淘宝作为中国最大的电商平台,拥有庞大的商品信息库。为了更好地利用这些数据,开发者可以通过淘宝提供的API接口来获取商品详情。本文将深入探讨如何使用淘宝详情API接口一键获取商品信息,通过实践操作和代码示例,带领读…...
在线陪诊系统: 医学科技的革新之路
医疗服务的数字化时代已经到来,而在线陪诊系统正是医学科技革新的杰出代表。通过巧妙的技术代码,这一系统不仅实现了患者和医生之间的远程互动,还将医疗服务推向了一个更加智能化的未来。在这篇文章中,我们将深入探讨在线陪诊系统…...
2. 两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 …...
自研基于Xilinx PCIe的高性能多路视频采集与显示控制器
1 概述 视频采集与显示子系统可以实时采集多路视频信号,并存储到视频采集队列中,借助高效的硬实时视频帧出入队列管理和PCIe C2H DMA引擎,将采集到的视频帧实时传递到上位机采集缓冲区。在超带宽视频采集情况下,支持采集丢帧操作…...
网络安全小白自学
一、网络安全应该怎么学? 1.计算机基础需要过关 这一步跟网安关系暂时不大,是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通,可以与学习其他课程同步进行。 2.渗透技…...
sprintboot快速初始化【Springboot】
1.首先选择创建项目 2.填写对应的项目信息 一定要勾选maven,否则没有pom文件,选择next 3.选择应用场景 点击 create,DIEA就会根据你的选择自动创建项目骨架; 4.创建一个控制层 随便创建一个控制层,测试一下项目是否…...
数据库系统概述之国产数据库
当今世界,数据已成为重要的生产要素,数据库管理系统更是广泛应用于信息化行业各领域,国内数据库产业能否健康可持续的发展,在很大程度上影响着国民经济发展和网络空间安全。 当前,国产数据库行业竞争非常激烈…...
法线制作神器crazybump 和 Normal Map Generator
UE4系列文章目录 文章目录 UE4系列文章目录前言一、crazybump是什么?二、Normal Map Generator是什么? 前言 我们在使用UE4、UE5制作材质时,经常会遇到使用法线图。使用深度图生成法线图,一般会使用photoShop等软件,对…...
【Linux下基本指令——(1)】
Linux下基本指令——(1) 一. ls 指令1.1.语法:1.2.功能:1.3.常用选项:1.4.举例:1.5.Xshell7展示 二. pwd 命令2.1.语法: 2.2.功能:2.3.常用选项:2.4.Xshell7展示 三. cd 指令3.1.语法…...
Linux下基于MPI的hello程序设计
Linux下基于MPI的hello程序设计 一、MPICH并行计算库安装实验环境部署创建SSH信任连接,实现免密钥互相连接node1安装MPICH 3.4配置NFS注意(一定要先看)环境测试 二、HELLO WORLD并行程序设计 一、MPICH并行计算库安装 在Linux环境下安装MPICH执行环境,配…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
