当前位置: 首页 > news >正文

【跨域问题】

跨域问题

官方概念:

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

本质来说,是前端请求给到后端时候,请求头里面,有一个 Origin ,会带上 协议域名端口号等;后端接受到请求;如果没有在“返回头”里面放上“一些东西”,返回的时候,浏览器根据“同源策略”,就不会接受到返回;

注意:

Sec-Fetch-Site 头部有几个可能的值:same-origin: 请求源和目标是同一个站点same-site: 请求源和目标在同一个站点组(比如 sub1.example.com 和 sub2.example.com)cross-site: 跨站点请求none: 请求不是由网站发起的(比如用户直接在地址栏输入URL)

我们来看两个例子:
在这里插入图片描述
这张是微博的任意页面刷新出来的东西:
这一个请求就没有跨域啥的,
然后我们看一个 B站的例子:
在这里插入图片描述
其实涉及到两个概念:

  • Origin,(例如:https://www.bilibili.com)
  • Host ,(例如:https://data.bilibili.com)

Origin是发出方。Host是目的地:这里可以看上面请求里B站的Host
在这里插入图片描述

解决

后端,返回的头里加上一个允许标记:给放过;
代码仅供参考,实际要根据业务需求情况,还有一些其他配置,这里关注:config.addAllowedOrigin("http://localhost:3000");
在这里插入图片描述

// 方案1:后端配置 CORS(跨域资源共享)
@Configuration
public class CorsConfig {@Beanpublic CorsFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();// 生产环境应该明确指定允许的域名config.addAllowedOrigin("https://www.your-domain.com");// 如果有多个域名,可以分别添加config.addAllowedOrigin("https://admin.your-domain.com");// 明确指定允许的请求方法,而不是使用 "*"config.addAllowedMethod("GET");config.addAllowedMethod("POST");config.addAllowedMethod("PUT");config.addAllowedMethod("DELETE");// 明确指定允许的头部,而不是使用 "*"config.addAllowedHeader("Authorization");config.addAllowedHeader("Content-Type");// 是否允许发送Cookieconfig.setAllowCredentials(true);// 预检请求的有效期,单位为秒config.setMaxAge(3600L);UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/api/**", config);return new CorsFilter(source);}
}

从前端也可以处理,生产环境的话,可以在Nginx里面配置

server {listen 80;server_name example.com;# 前端静态文件location / {root /path/to/dist;try_files $uri $uri/ /index.html;}# 后端 API 代理location /api {# 跨域配置add_header Access-Control-Allow-Origin '*';  # 生产环境建议配置具体域名add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';add_header Access-Control-Allow-Headers 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';# 处理 OPTIONS 预检请求if ($request_method = 'OPTIONS') {return 204;}# 反向代理配置proxy_pass http://localhost:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

时光海海,日常焦虑 🍀,加油

相关文章:

【跨域问题】

跨域问题 官方概念: 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域本质来说,是前端请求给到后端时候,请求头里面,有一个 Origin ,会带上 协议域名端口号等;后端接受到请求&…...

“深入浅出”系列之FFmpeg:(1)音视频开发基础

我的音视频开发大部分内容是跟着雷霄骅大佬学习的,所以笔记也是跟雷老师的博客写的。 一、音视频相关的基础知识 首先播放一个视频文件的流程如下所示: FFmpeg的作用就是将H.264格式的数据转换成YUV格式的数据,然后SDL将YUV显示到电脑屏幕上…...

Springboot3.4整合jsp

文章目录 环境 springboot3.4 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency> <!--用于编译jsp--> <!-- Tomcat Embed Jasper --> <dependency>…...

CSS:背景样式、盒子模型与文本样式

背景样式 背景样式用于设置网页元素的背景&#xff0c;包括颜色、图片等。 背景颜色 使用 background-color 属性设置背景颜色&#xff0c;支持多种格式&#xff08;颜色英文、十六进制、RGB等&#xff09;。 div {background-color: lightblue; }格式示例十六进制#ff5733R…...

算法:线性查找

线性查找算法是一种简单的查找算法,用于在一个数组或列表中查找一个特定的元素。它从数组的第一个元素开始,逐个检查每个元素,直到找到所需的元素或搜索完整个数组。线性查找的时间复杂度为O(n),其中n是数组中的元素数量。 实现原理 从列表的第一个元素开始,逐个检查每个…...

【计算机网络】什么是网关(Gateway)?

网上冲浪多了&#xff0c;你可以听到过网关&#xff08;Gateway&#xff09;这个词&#xff0c;但是却不太清楚网关&#xff08;Gateway&#xff09;到底是干什么的、负责网络当中的什么任务&#xff0c;本篇文字将会为你介绍网关&#xff08;Gateway&#xff09;的作用&#x…...

20250106面试

rabbitmq如何保证消息不丢失 my&#xff1a; 持久化&#xff0c;包括消息持久化和队列持久化&#xff0c;重启不丢失。持久化到磁盘中的。 消息确认 死信队列&#xff1a;消费失败&#xff08;业务异常/未确认&#xff0c;重试后&#xff0c;会放死信队列&#xff09;&…...

Java 分布式锁:Redisson、Zookeeper、Spring 提供的 Redis 分布式锁封装详解

&#x1f4da; Java 分布式锁&#xff1a;Redisson、Zookeeper、Spring 提供的 Redis 分布式锁封装详解 在分布式系统中&#xff0c;分布式锁 用于解决多个服务实例同时访问共享资源时的 数据一致性 问题。Java 生态中&#xff0c;有多种成熟的框架可以实现分布式锁&#xff0…...

智能汽车的数字钥匙安全

数字钥匙作为汽车智能化变革下的一项创新技术&#xff0c;利用蓝牙定位、NFC等近场通信技术进行钥匙与汽车的匹配继而开锁&#xff0c;可以让车主通过智能手机、可穿戴设备等解锁汽车&#xff0c;并对汽车实施相关的操作&#xff0c;提升用车便利性&#xff0c;受到越来越多车企…...

YangQG 面试题汇总

一、交叉链表 问题&#xff1a; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 解题思想&#xff1a; 双指针 备注&#xff1a;不是快慢指针&#xff0c;如果两个长度相…...

急速了解什么是GPU服务器

GPU服务器是一种专门配置了高性能图形处理器&#xff08;GPU&#xff09;的服务器&#xff0c;旨在提供高性能计算、深度学习、科学计算等多种场景的计算服务。与传统的CPU服务器相比&#xff0c;GPU服务器在处理并行密集型计算任务时具有显著优势。本文将详细介绍GPU服务器的定…...

用 Python 绘制可爱的招财猫

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​ ​​​​​​​​​ ​​​​ 招财猫&#xff0c;也被称为“幸运猫”&#xff0c;是一种象征财富和好运的吉祥物&#xff0c;经常…...

Linux 获取文本部分内容

Linux获取文本部分内容 前言场景获取前几行内容获取末尾几行内容获取中间内容head 命令 tail 命令 结合sed 命令awk 命令 前言 test.log 文本内容如下&#xff1a; &#xff08;注意&#xff1a;内容 a1004和a1005之间有一空行&#xff09; [rootgaussdb002 tmp]# cat test.…...

01-51单片机LED与独立按键

一、单片机概述 注意&#xff1a;个人学习笔记&#xff0c;里面涉及到的C语言和进程转换相关的知识在C语言部分已经写了&#xff0c;这里是默认都会的状态学习单片机。 1.什么是单片机 单片机&#xff0c;英文Micro Controller Unit&#xff0c;简称MCU。其内部集成了CPU、R…...

【微服务】SpringBoot 整合Redis实现延时任务处理使用详解

目录 一、前言 二、延迟任务的高频使用场景 三、延迟任务常用解决方案 3.1 Quartz 3.2 DelayQueue 3.2.1 Timer + TimerTask 3.2.2 ScheduledExecutorService 3.3 Redis sorted set 3.4 RabbitMQ 四、Redis实现延时队列操作实战 4.1 Redis Sorted Set 概述 4.1.1 Re…...

【Java项目】基于SpringBoot的【校园交友系统】

【Java项目】基于SpringBoot的【校园交友系统】 技术简介&#xff1a;系统软件架构选择B/S模式、SpringBoot框架、java技术和MySQL数据库等&#xff0c;总体功能模块运用自顶向下的分层思想。 系统简介&#xff1a;系统主要包括管理员和用户。 (a) 管理员的功能主要有首页、个人…...

Elasticsearch学习(1) : 简介、索引库操作、文档操作、RestAPI、RestClient操作

目录 1.elasticsearch简介1.1.了解es1.2.倒排索引正向索引和倒排索引 1.3.es的一些概念:文档和字段&#xff1b;索引和映射&#xff1b;Mysql与ES1.4.安装es、kibana部署单点es部署kibanaIK分词器安装IK分词器与测试扩展与停用词词典总结 部署es集群 2.索引库操作2.1.mapping映…...

ls指令详讲

&#x1f3dd;️专栏&#xff1a;https://blog.csdn.net/2301_81831423/category_12872319.html &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 常用选项详解 1. 基本选项 …...

【前端】【CSS3】基础入门知识

目录 如何学习CSS 1.1什么是CSS​编辑 1.2发展史 1.三种导入方式 1.1、行内样式 1.2、外部样式 1.3、嵌入方式 2.选择器 2.1、基本选择器 &#xff08;1&#xff09;元素选择器 &#xff08;2&#xff09;类选择器 &#xff08;3&#xff09;id选择器&#xff1a;必…...

计算机网络之---RIP协议

RIP协议的作用 RIP (Routing Information Protocol) 协议是一个基于距离矢量的路由协议&#xff0c;它在网络中用来动态地交换路由信息。RIP 是最早的路由协议之一&#xff0c;通常用于小型和中型网络中。它的工作原理简单&#xff0c;易于实现&#xff0c;但在一些大型网络中效…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...