跨域以及解决方案

news2024/9/21 0:33:17

禹神:一小时彻底搞懂跨域&解决方案_哔哩哔哩_bilibili该直播回放对跨域的多种解决方案进行了梳理,内容包括:分析同源策略、分析预检请求、跨域的多种解决方案(CORS、JSONP、代理)、同时也从后端人员角度梳理了各种必备的响应头,无论你是前端还是后端,都能让你彻底搞懂跨域。, 视频播放量 22132、弹幕量 73、点赞数 991、投硬币枚数 531、收藏人数 2399、转发人数 112, 视频作者 尚硅谷, 作者简介 就业规划、简历模板、毕业设计,加小谷姐姐Q:3276742687,相关视频:禹神:一小时快速上手Electron,前端Electron开发教程,一小时速通JavaScript模块化,涵盖CommonJS与ES6模块化,禹神:前端项目部署指南,前端项目打包上线,尤雨溪谈为什么要出国,你还在手写CSS效果?,天才乔布斯,一语道破计算机的本质,尚硅谷禹神分享CSS技术专题(直播回放),当我看到有人使用github桌面,尚硅谷《计算机组成原理》计算机408考研、考试不挂+考研拿下!计组,逃避可耻但有用!前端已退坑~icon-default.png?t=N7T8https://www.bilibili.com/video/BV1pT421k7yz/?spm_id_from=333.1007.top_right_bar_window_history.content.click 


 

同源策略概述

(1)浏览器的同源策略:

浏览器为确保资源安全,而遵循的一种策略。

1.1 什么是源?

(不看路径) 

1.2 同源与非同源 

 

1.3 同源请求与非同源请求

[所处源』与『目标源』不一致,就是『非同源」又称「异源』或『跨域』

 

 

(2)浏览器会对跨域做出哪些限制?

例如: [源A] [源B] ,它们是 [非同源] 的,则浏览器会有如下限制:
 

①DOM 访问限制:

[源A] 的脚本不能读取和操作 [源B] 的DOM

这么写就触发跨越了,拿不到iframe的document

 

② Cookie 访问限制:

[源A] 不能访问 [源B] 的cookie。

 

 ③Ajax 响应数据限制:

[源A] 可以给 [源B] 发请求,但是无法获取 [源B] 响应的数据。

浏览器对 Ajax 获取数据的限制是影响最大的一个,且实际开发中经常遇到。 

 

注意:

1.跨域限制仅存在浏览器端,服务端不存在跨域限制。

2.即使跨域了,Ajax 请求也可以正常发出,但响应数据不会交给开发者

3.<link>、<script>、<img>…… 这些标签发出的请求也可能跨域,只不过浏览器对标签跨域不做严格限制(CSP),对开发几乎无影响。

 


CORS 解决 Ajax 跨域问题

 (1)CORS 概述

CORS 全称:Cross-Origin Resource Sharing(跨城资源共享),是用于控制 浏览器校验 跨域请求的一套规范,服务器依照 CORS 规范,添加特定 响应头 来控制浏览器校验,大致规则如下:

  • 服务器明确表示 拒绝跨域 请求,或没有表示,则浏览器校验不通过。
  • 服务器明确表示 允许跨域 请求,则浏览器校验通过。

使用 CORS 解决跨域是最正统的方式,且要求服务器是“自己人“ 

 

(2)CORS 解决跨域 

 (1)简单请求与复杂请求:

CORS 会把请求分为两类,分别是:  ① 简单请求、②复杂请求

 

 关于预检请求 perflight:

  1. 发送时机:预检请求在实际跨域请求之前发出,是由浏览器自动发起的。
  2. 主要作用:用于向服务器确认是否允许接下来的跨域请求。
  3. 基本流程:先发起 OPTIONS 请求,如果通过预检,继续发起实际的跨域请求。
  4. 请求头内容:一个OPTIONS 预检请求,通常会包含如下请求头:

(2)简单请求解决方法: 

整体思路: 服务器在给出响应时,通过添加 Access-Control-Allow-Origin 响应头,来明确表达允许某个源发起跨域请求,随后浏览器在校验时,直接通过。

 

因此需要  express 配置  Access-Control-Allow-Origin :

(3)复杂请求解决方法: 

①服务器先通过浏览器的预检请求,服务器需要返回如下响应头: 

 ②处理实际的跨域请求(与处理简单请求跨域的方式相同)

 

(4)借助 cors 库快速完成配置:

上述的配置中需要自己配置响应头,或者需要自己手动封装中间件,借助cors 库,可以更方便完成配置

 


JSONP 解决跨域问题

(1)概述

1.1 JSONP 概述:

JSONP 是利用了<script>标签可以跨域加载脚本,且不受严格限制的特性,可以说是程序员智慧的结晶,早期一些浏览器不支持 CORS 时,可以靠 JSONP 解决跨域(但是只能解决get请求)

 

1.2 基本流程: 

  1. 客户端创建一个<script>标签,并将其 src 属性设置为包含跨域请求的 URL,同时准备一个回调函数,这个回调函数用于处理返回的数据。
  2. 服务端接收到请求后,将数据封装在回调函数中并返回。 
  3. 客户端的回调函数被调用,数据以参数的形势传入回调函数 

(2)配置代理解决跨域: 

 (3)jQuery封装的JSONP:


配置代理解决跨域 

(1)自己配置代理服务区 

 借助 http-proxy-middleware 配置代理

允许跨域并去掉api(通过代理服务器发送,因为服务器与服务器之间没有跨域限制) 

 

(2)使用 Nginx 搭建代理服务器


(3)🌟借助脚手架搭建服务器

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

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

相关文章

计算机毕业设计选题推荐-学生作业管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

一次性下发100w的优惠券/短信/二维码,兼顾线程池参数可配置

1、场景需求分析 针对6.18,11.11这种场景,平台一次性发布500w张优惠券,或者对于锁单用户统一发下100w张确认信息,同时我们平时有抢购茅台的场景,京东一次性发布10w个验证码,主要是针对高并发多线程大数据批处理任务的场景,一般用于二维码、优惠券、邮件、短信等场景。 …

MyBatis的适用场合与优势

MyBatis的适用场合与优势 1、适用场合2、优势 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、适用场合 SQL灵活控制&#xff1a; 适合需要精确控制SQL语句生成和执行的项目。 高性能需求&#xff1a; 对于性能要求高的系统&#xff0c;…

02:【stm32】工程模板的创建

工程模板的创建 1、创建工程文件2、创建STM32的启动文件3、Keil软件里面添加启动文件4、创建我们编写程序的文件夹5、创建存放标准库函数的文件夹6、Keil软件的一些设置 1、创建工程文件 2、创建STM32的启动文件 ①创建Start文件夹用来保存STM32的启动文件 ②下载STM32的固件库…

Apple在Swift中引入同态加密

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- 在计算过程中确保数据隐私和安全性很重要&#xff0c;尤其是在使用云服务。传统的加密方法要求在处理数据之前对数据进行解密&#xff0c;使其面临潜在风险。同态加密是隐私计算的分支&#xf…

C Primer Plus 第5章——第二篇

你该逆袭了 第5 章:重点摘录 三、表达式和语句1、表达式2、语句&#xff08;1&#xff09;副作用 和 序列点&#xff08;a&#xff09;副作用&#xff08;b&#xff09;序列点1、完整表达式 3、复合语句&#xff08;块&#xff09; 四、类型转换1、强制类型转换运算符2、总结&a…

修改 WSL 安装的子系统的位置,节约C盘空间

问题描述 由于 WSL 玩了一阵子&#xff0c;发现C盘的磁盘空间快没了&#xff0c;如下图所示 感觉以后还是不要磁盘分区了&#xff0c;全部在C盘也没什么不好的。 挪动子系统方法 如下图所示&#xff0c;为了方便演示&#xff0c;我们安装了 ubuntu 子系统&#xff0c;并且打…

快讯 | AI牙医震撼登场:15分钟完成牙冠准备,速度超人类8倍!

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展&#xff0c;捕捉行业动态&#xff1b;提供深入的新闻解读&#xff0c;助您洞悉技术背后的逻辑&#xff1b;汇聚行业专家的见解&#xff0c;…

计算几何 点乘 两点间距离 两向量夹角

点乘 点乘&#xff08;也称为内积、标量积或数量积&#xff09;是线性代数中两个向量之间的一种运算&#xff0c;其结果是一个标量&#xff08;即一个单一的数&#xff0c;而不是向量&#xff09;。对于两个n维向量a(a 1 ,a 2 ,…,a n )和b(b 1 ,b 2 ,…,b n )&#xff0c;它们…

翻译: 梯度下降 深度学习神经网络如何学习一

在上一节影片里我讲解了神经网络的结构 首先我们来快速回顾一下 在本节影片里&#xff0c;我们有两个目标 首介绍梯度下降的概念 它不仅是神经网络工作的基础 也是很多其他机器学习方法的基础 然后我们会研究一下这个特别的网络是如何工作的 以及这些隐藏的神经元层究竟在寻找什…

【RDMA项目】如何使用rdma-core进行调用开发一个实战项目

RDMA (Remote Direct Memory Access) 是一种网络协议&#xff0c;可以在计算节点之间实现高效的内存数据传输&#xff0c;而无需CPU的干预。rdma-core 是 RDMA 的一个用户空间库&#xff0c;提供了一些简单易用的接口来使用 RDMA 功能。 开发了一套高级 RDMA&#xff08;远程直…

浅谈Trie树算法(c++)

文章目录 于是他错误的点名开始了题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路AC代码 01Trie求n个数两两异或的最大值AC代码 Nikitosh 和异或思路AC代码 The XOR-longest Path思路AC代码 又称字典树&#xff0c;用边来代表字母&#xff0c;而从根结…

《最终幻想14》手游版已获准在中国发行

上个月&#xff0c;有传言称史克威尔和腾讯正在合作开发前者大获成功的MMORPG《最终幻想14》的手机版。Niko Partners分析师丹尼尔艾哈迈德在推特上提到&#xff0c;中国国家新闻出版署已批准发行新一批进口游戏&#xff0c;其中包括《最终幻想14》的手机版&#xff0c;名为《最…

AI智能名片小程序:匹配法则下的粉丝经济新探索

摘要&#xff1a;在数字化时代&#xff0c;企业与消费者之间的互动方式正经历着前所未有的变革。AI智能名片小程序作为这一变革中的新兴产物&#xff0c;不仅重塑了传统商务交流的场景&#xff0c;更在匹配法则的指导下&#xff0c;深刻影响着品牌与粉丝关系的构建与维护。本文…

网络安全数字化转型

1. 背景介绍 在当今数字化浪潮席卷全球的背景下&#xff0c;推行数字化网络安全建设显得尤为迫切与重要&#xff0c;这主要根植于两大核心驱动力&#xff1a;实战挑战的严峻性与行业发展的迫切需求。 1.1. 实战难题的迫切应对 随着信息技术的飞速发展&#xff0c;网络…

全球汽车用粉末涂料市场规划预测:2030年市场规模将接近199亿元,未来六年CAGR为4.3%

一、引言 随着全球汽车行业的持续发展&#xff0c;汽车用粉末涂料作为车辆涂装的重要材料&#xff0c;其市场重要性日益凸显。本文旨在探索汽车用粉末涂料行业的发展趋势、潜在商机及其未来展望。 二、市场趋势 全球汽车用粉末涂料市场的增长主要受全球汽车产量增加、消费者对…

OpenCV||超详细的几何变换

2D图像几何变换的33矩阵&#xff1a; 图像常见的几何变换&#xff1a; 图像来源&#xff1a;《OpenCV 4.5计算机视觉开发实战&#xff1a;基于Python》作者&#xff1a;朱文伟 李建英&#xff1b; 1. 平移&#xff08;Translation&#xff09; 在OpenCV中&#xff0c;平移不是…

如果你感到焦虑、精神内耗,那就跑步去吧!

点击上方△腾阳 关注 转载请联系授权 你好&#xff0c;我是腾阳。 深夜里&#xff0c;你是否辗转反侧、思绪万千却难以入眠&#xff1f; 面对工作截止日期压力山大、心力交瘁&#xff0c;但总提不起神&#xff0c;工作效率低下&#xff1f; 人际交往中&#xff0c;被误解和…

windows 下使用MSYS2编译ffmpeg

1. 下载ffmpeg ,最新源码下载FFmpeghttps://ffmpeg.org/ 2.下载MSYS2,并安装(正常操作步骤) MSYS2Software Distribution and Building Platform for Windowshttps://www.msys2.org/3. 安装好MSYS2后,配置编译环境 打开mingw64.e

Python 进度条:告别枯燥等待,让你的程序动感十足!

在日常编程中&#xff0c;我们经常会遇到需要处理耗时任务的情况&#xff0c;例如文件下载、数据处理等等。看着程序运行&#xff0c;却只能干巴巴地等待&#xff0c;实在令人心焦。 别担心&#xff01;今天就来教你如何使用 Python 创建炫酷的进度条&#xff0c;告别枯燥等待…