CORS(跨域资源共享)和SOP(同源策略)

        CORS(跨域资源共享)和SOP(同源策略)不是同一个东西,但它们紧密相关,并且常常一起讨论,因为 CORS 是为了解决同源策略带来的跨域问题而引入的。

同源策略(Same-Origin Policy)

同源策略是一种浏览器安全机制,用于限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。同源策略的核心是确保不同源之间的资源不会互相干扰,从而保护用户的安全。

  • 同源定义

    • 协议(protocol)、主机(host)和端口(port)三者必须完全相同,才被认为是同源。
    • 例如,http://example.com/page1 和 http://example.com/page2 是同源的,但 http://example.com 和 https://example.com 不是同源的(协议不同),http://example.com 和 http://sub.example.com 也不是同源的(主机不同)。
  • 同源策略的限制

    • JavaScript 不能直接访问不同源的页面内容。
    • AJAX 请求不能发送到不同源的服务器。
    • Cookie、LocalStorage 等存储机制也有同源限制。

CORS(跨域资源共享)

CORS 是一种机制,它允许服务器在响应中添加特定的 HTTP 头,从而允许浏览器放宽同源策略的限制,使得不同源的网页可以请求和访问资源。

  • CORS 的工作原理

    • 预检请求(Preflight Request):对于复杂请求(如带有自定义头的请求、PUT 或 DELETE 请求),浏览器会先发送一个 OPTIONS 请求到服务器,询问服务器是否允许实际的请求。
    • 简单请求(Simple Request):对于简单请求(如 GET、POST 请求,且没有自定义头),浏览器会直接发送请求,但在请求头中会包含 Origin 字段,表明请求来自哪个源。
    • 服务器响应:服务器在响应中添加 Access-Control-Allow-Origin 头,表示允许哪些源访问资源。如果源不在允许列表中,浏览器会阻止请求。
  • CORS 的优点

    • 允许跨域请求,提高前后端分离开发中的灵活性。
    • 增强了安全性,因为服务器可以控制哪些源可以访问资源。

总结

  • 同源策略:是一种浏览器安全机制,限制不同源之间的资源交互。
  • CORS:是一种解决同源策略限制的机制,允许服务器通过特定的 HTTP 头放宽同源策略,使得跨域请求成为可能。

虽然它们不是同一个东西,但 CORS 是为了解决同源策略带来的跨域问题而设计的。理解它们之间的关系和区别,有助于更好地进行 Web 开发和安全配置。

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

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

相关文章

自攻螺钉的世纪演变:探索关键设计与应用

自攻螺钉作为现代工业和建筑中的不可或缺的标准部件,经过了超过100年的发展和创新。从1914年最早的铁螺钉设计到今天的自钻自攻螺钉,自攻螺钉的设计不断优化,以适应更复杂的应用需求。本文将回顾自攻螺钉的演变历程,分析其设计原理…

HTB:PermX[WriteUP]

目录 连接至HTB服务器并启动靶机 1.How many TCP ports are listening on PermX? 使用nmap对靶机TCP端口进行开放扫描 2.What is the default domain name used by the web server on the box? 使用curl访问靶机80端口 3.On what subdomain of permx.htb is there an o…

Python 项目国际化:使用 Babel 实现多语言支持

文章目录 如何使用 Babel 实现 Python 项目国际化1. 安装 Babel2. 设置项目目录结构3. 标记可翻译的文本4. 提取可翻译的文本生成文件 —— 生成pot文件4.1 有配置文件方式(使用 babel.cfg)4.1.1. 创建 babel.cfg 文件4.1.2. 提取翻译内容 4.2 无配置文件…

信号-2-信号捕捉

相关概念:递达 未决 / 阻塞 忽略 阻塞 vs 忽略 阻塞: 如果指定信号信号被阻塞, block期间该信号不能被递达,一直在pending表中。知道block被撤销后, 该信号才能递达,递达后对应pending位置置零。 忽…

正则表达式1 re.match惰性匹配详解案例

点个关注 re.match() re.match() 函数尝试从字符串的开头开始匹配一个模式,如果匹配成功,返回一个匹配成功的对象,否则返回None。大小写区分,内容匹配不到后面的,只能匹配一个,不能有空格(开头匹配&#…

如何针对云计算安全进行等保测评?

等级保护作为我国网络安全法明确的重要制度,已在我国信息系统安全保驾护航中发挥着重要作用。目前,等级保护已经进入了2.0时代,“云、大、物、移、工控”纳入等保监管。 当前,按照传统等级保护技术要求实施的安全策略已经不能适应…

软考:性能测试的几个方面

性能测试的指标: 响应时间,吞吐量,并发用户数,资源利用率等 四个方面: 1、发现缺陷 2、性能调优 3、评估系统能力,不仅需要,还需要。 4、验证稳定性和可靠性

Vue(JavaScript)读取csv表格并求某一列之和(大浮点数处理: decimal.js)

文章目录 想要读这个表格,并且求第二列所有价格的和方法一:通过添加文件输入元素上传csv完整(正确)代码之前的错误部分因为价格是小数,所以下面的代码出错。如果把parseFloat改成parseInt,那么求和没有意义…

搭建兰空图床并配合PicGo实现批量上传

文章目录 服务器安装docker安装数据库部署兰空图床兰空图床配置邮箱验证配合PicGo实现批量上传 最近想试试自己搭建图床,虽然免费的又拍云够用了,但对象存储和图床还是有区别的,用起来有些复杂,所以打算试试兰空图床 服务器 想搭建…

如何对数据库的表字段加密解密处理?

对于表格数据的加密处理,通常涉及到对数据库中存储的数据进行加密,以保护敏感信息。 Java示例(使用AES算法加密数据库表数据) 首先,你需要一个数据库连接,这里假设你使用的是JDBC连接MySQL数据库。以下是…

LLM训练”中的“分布式训练并行技术;分布式训练并行技术

目录 “LLM训练”中的“分布式训练并行技术” 分布式训练并行技术 数据并行 流水线并行:按阶段(stage)进行切分 张量并行 序列并行 多维混合并行 自动并行 MOE并行 重要的分布式AI框架 “LLM训练”中的“分布式训练并行技术” 随着深度学习技术的不断发展,特别是…

TS学习笔记

一、TS运行环境搭建 1、安装 安装命令 npm i -g typescript 第一步:新建index.html和demo.ts 第二步:在index.html引入demo.ts文件 第三步:运行TS的命令 tsc demo.ts 注意:运行命令后,会将ts文件转换成js文件 …

ubuntu 22.04 server 安装 和 初始化 LTS

ubuntu 22.04 server 安装 和 初始化 下载地址 https://releases.ubuntu.com/jammy/ 使用的镜像是 ubuntu-22.04.5-live-server-amd64.iso usb 启动盘制作工具 https://rufus.ie/zh/ rufus-4.6p.exe 需要主板 支持 UEFI 启动 Ubuntu22.04.4-server安装 流程 https://b…

Python接口自动化测试实战

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广泛…

day01 - web开发简介

本课程涉及到的技术: Vue ElementUI/Html Js SpringBoot–Spring SpringMvc MyBatis(Plus) SSM Axios 学习路径: 前端主要: Html5css3JavaScript(JQuery)–>Vue(Node.js也可以学习一 下,服务端js)ElementUi(uni-app) 后端主要…

qt QMessageBox详解

1、概述 QMessageBox是Qt库中的一个类,它用于在图形用户界面(GUI)程序中显示消息框。消息框是一种用于向用户显示信息、警告、错误或询问用户确认的对话框。QMessageBox可以显示文本、图标和按钮,并允许自定义按钮的文本和功能。…

简易版 python调用cuda方法

目标: 手写一些cuda库, 使用python调用这些库 (Linux) 步骤一: 在linux上安装pybind11 方法1: sudo apt-get install python3-pybind11 方法2: git clone https://github.com/pybind/pybind11.git, 如果将其放在项目目录下的话可以不编译 步骤二: 编写CUDA代码 示例: gpu_l…

51单片机学习心得2(基于STC89C52):串口通信(UART)

串口通信(UART) 电平标准 (注意:单片机中常使用TTL电平) 上图中第一种与第二种电平传输信号有效距离只有十几米,距离超出后会传输数据错误;但是第三种电平传输的有效距离可达上千米。 常用通信…

gitlab-runner中搭建nvm、nrm以及优化maven打包

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 gitlab-runner中搭建nvm、nrm以及优化maven打包 git、gitlab-runner如何以gitlab-runner执行nvm、…

一文读懂:AIOps 从自动化运维到智能化运维

今天跟大家聊一聊AIOps(人工智能运维) 为了应对企业面临着日益复杂的运营挑战,AIOps(人工智能运维)作为一种创新的方法应运而生,结合了人工智能和机器学习技术,来提升IT运营的效率和性能。 这…