什么是跨网域资源共享(CROS)

news/2025/10/29 14:27:45/文章来源:https://www.cnblogs.com/singless233/p/19174329

1 同源策略

浏览器的同源策略 - Web 安全 | MDNdeveloper.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy


同源策略是一种重要的安全机制,它限制一个源加载的文档或脚本如何与另一个源的资源进行交互。
同源政策是网站安全的基础。只能访问自己网站里的资源(图片、影片、节目码等),不允许网站来访问。想要访问跨来源资源必须在某些特定情况下才被允许。


源的定义
如果两个 URL 的协议、端口(如果有指定的话)和主机都相同的话,则这两个 URL 是同源的。这个方案也被称为“协议/主机/端口元组”,或者直接是“元组”。(“元组”是指一组项目构成的整体,具有双重/三重/四重/五重等通用形式。)
下表给出了与 URL http://store.company.com/dir/page.html 的源进行对比的示例:

URL结果原因
同源 只有路径不同
同源 只有路径不同
失败 协议不同
失败 端口不同(http:// 默认端口是 80)
失败 主机不同


同源政策是浏览器专属,所以才会发生用postman可以获取 API 响应但放到网站上就会失败的情况。

2 CROS

跨源资源共享(CORS) - HTTP | MDNdeveloper.mozilla.org/zh-CN/docs/Web/HTTP/CORS


CORS 翻译成中文就是跨网域资源共享,所以你可以用我的资源我也可以用你的


为什么会有CORS
同源政策虽然不错,因为他阻止了一些恶意的脚本攻击,但总不会每个跨网域都是恶意的;也可能没有一间公司拥有所有的资源,有时还是必须串接第三方资源,例如Facebook API、Google Map、政府发布的公开API等。
跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。
跨源 HTTP 请求的一个例子:运行在 https://domain-a.com 的 JavaScript 代码使用 XMLHttpRequest 来发起一个到 https://domain-b.com/data.json 的请求。即在a域名上请求b域名的资源。
出于安全性,浏览器限制脚本内发起的跨源 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。


如果服务器不允许跨域,则能在浏览器开发者工具中看到以下报错


上面这些报错要解决需要在web服务器端加上相关的响应头配置,如Access-Control-Allow-Origin = http://localhost:8000表示运行http://localhost:8000跨源请求本机的资源。Access-Control-Allow-Origin = *表示server端接收所有的跨源请求。
3 Access-Control-Allow-Private-Network

最近环境进行了一波迁移,迁移后发现通过web不能正常上传文件到服务器上了。F12检查报错如下。The request client is not a secure context and the resource is in more-private address space private。并且显示是cors error


一番调查发现原因是因为在CORS-RFC1918中规定了local、private、public三个地址空间。不同地址空间之间访问会被认为是跨域。在我的环境中server端网段为172.x.x.x属于private空间,请求server资源的client端地址为6.x.x.x为public空间。因此会报错跨域。local、private地址范围如下,其余都属于public地址空间。


google浏览器一向对安全限制较为严格,因此最新版本都启用了对跨地址空间访问的检查。firefox浏览器不存在该问题。
要解决这个问题有三种方法

  1. google浏览器中访问以下地址,关闭掉相关检测,重启浏览器
    chrome://flags/#block-insecure-private-network-requests

2. server端和请求server端的节点都启用https

3. server端加上Access-Control-Allow-Private-Network: true的响应字段,允许跨地址空间访问

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

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

相关文章

【生活】选购油烟机

前言: 主包家里的厨房在六楼,油烟可以直接从墙上预留通风口排出,所以以下内容是按主包的实际需求出发的性价比公式风量(\(m^3 / min\)):也就是吸力,经常爆炒的至少 20 \(m^3 / min\) 最好 静压(\(Pa\)):也就…

从经验到数据:MyEMS 如何推动能源管理的范式升级?

在 “双碳” 目标深化推进与能源结构转型加速的背景下,能源管理已从传统的 “降本降耗” 单一诉求,升级为 “效率提升、低碳转型、安全保障” 三位一体的核心需求。然而,长期以来,我国工业、建筑、园区等领域的能源…

2025 年试压泵厂家最新推荐榜,技术实力与市场口碑深度解析,展现国产设备卓越性能四缸电动/三缸电动/水管/大流量电动/柴油动力试压泵公司推荐

引言 为精准筛选出 2025 年试压泵领域兼具技术实力与市场认可度的优质品牌,通用机械工业协会泵业分会联合行业权威检测机构,开展了为期 3 个月的专项测评。测评采用 “多维量化 + 实地考察” 双轨模式,从企业综合实…

Ceph运维手册(基于P版本)

本文基于Ceph P版,适用于ceph-deploy部署非容器化部署场景。 完整版PDF下载链接请点击以下链接 https://mp.weixin.qq.com/s/57zn-a4zZ4Dc2mBhsa23PQ 修订记录版本 时间 修订人V1.0 2024年03月06号 singless目录 一、…

2025最新AI智能体学习路线图

零基础如何入门AI智能体?智能体来了为你梳理完整学习路径。 🧠智能体来了课程主体线路下图描绘了智能体学习的整体思路,细节内容颇多,今天给各位看官讲解部分,关注博主,详细细节后续会持续更新。大纲打造旨在解…

K8S如何查询PVC的已用容量和剩余可用容量

在业务中如果有数据持久化存储的需求就免不了要使用到PV、PVC,既然使用了PV和PVC那么它们的容量使用情况也是我们需要关注的。目前K8S并未提供接口让我们可以直接查询到PVC的容量使用情况,因此本文主要介绍K8S环境下…

学术会议会议合集 | 人工智能、未来教育 、智能控制 、计算科学 、传感器技术等EI会议合集

人工智能、未来教育 、智能控制 、计算科学 、传感器技术等EI会议合集2025年第二届人工智能与未来教育国际学术会议(AIFE 2025) 2025 2nd International Conference on Artificial Intelligence and Future Educatio…

完整教程:金融分析师技能提升路径与学习资源指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年水磨石厂家最新推荐榜,技术实力与市场口碑深度解析水磨石预制板/人造水磨石/水磨石地砖/水磨石成品地砖/彩色水磨石地砖公司推荐

随着无机水磨石、预制板等细分品类需求激增,市场品牌分化加剧。为破解采购难题,本次榜单依托建筑材料流通协会地坪委员会 2025 年度测评数据,采用 "四维评估体系":生产实力(占比 30%)涵盖厂房规模与自…

Unreal:如何调用DLL

说说我的方法吧,不知道正不正确,但是能用,哈哈哈哈,跟着官方的第三方库弄的打包dll那一套我就不赘述了,就说说拿到DLL和Lib怎么办 以官方模板创建得插件TestThird为例 将dll,lib文件放到TestThird\Source\ThirdP…

建筑矿山设备工厂:MyEMS 如何助力实现 30% 能源自给率与 ISO 50001 认证?

建筑矿山设备工厂作为典型的高能耗制造场景,其生产流程涉及大型机床加工、热处理、焊接、装配等环节,对电力、热力、燃料的需求旺盛。近年来,在 “双碳” 目标与能源成本上涨的双重压力下,工厂不仅需要降低对传统化…

lldpd介绍

1 介绍 lldpd是IEEE802.1AB (LLDP)协议的一种实现。目标是帮助定位所有设备的邻居设备。例如可以定位服务器某个网卡是接在交换机的哪个接口上。要使用该协议交换机上需要启用lldp协议,linux服务器上需要安装lldp相…

HarmonyOS6纯血鸿蒙开发

一、HarmonyOS 开发准备 1.成为华为开发者 在开始应用开发前,需要先完成以下准备工作。在华为开发者联盟网站上,注册成为开发者,并完成实名认证,从而享受联盟开放的各类能力和服务。 1.1 注册账号 如果您已经有华为…

2025年10月短视频营销公司实力榜:五强对比评测与选择指南

一、引言 短视频流量红利进入精细化运营阶段,企业主、市场总监、增长负责人普遍面临“投流贵、内容倦、转化弱”的三重夹击。对创业者而言,能否以可控成本跑通短视频获客闭环,直接决定现金流健康;对成熟品牌而言,…

kettle调度系统-kettle嵌入集成方式调度,稳如磐石,一分钟完成任务调度配置

这款调度产品,早在N年前已经横扫江湖,后来隐退于kettler人间,不少大佬已经在生产环境使用这款产品,今天将重出江湖,造福kettler,咱们正式叫它【kettle金刚调度系统】,江湖名xxkg-pdi。废话少说,亮剑!!! 本款…

探索 RoCE v2:高性能网络技术在 AI 场景中的应用

1. RDMA介绍 1.1 什么是RDMA RDMA(Remote Direct Memory Access),全称远端内存直接访问技术,可以在使用极少CPU资源的情况下,将数据从一台服务器传输至另一台服务器。 在数据中心内部,大型分布式计算存储资源之间,…

K8S下的GPU监控

1 DCGM介绍 在前面给大家介绍了K8S环境下如何调度GPU,在显卡的实际应用中,监控是不可缺少的一环。通过监控,我们能更直观的了解到显卡的使用情况和各项监控指标。英伟达提供了DCGM (NVIDIA Data Center GPU Manager…

Unreal:多屏幕全屏后只有一个屏幕显示怎么办

这里讨论的是,多个屏幕时,用N卡的Surround融合为一个屏幕,当开始游戏后发生的问题 原因 这里的代码截图是Unreal5.3.2版本当全屏时,会获得一个最大分辨率,这个分辨率是你主屏幕的分辨率,即使是通过Surround融合成…

MyEMS 的智慧大脑:从能耗建模到预测性维护的全流程技术逻辑

在 “双碳” 目标与企业降本增效的双重驱动下,能源管理已从传统的 “事后统计” 转向 “实时调控、主动预防” 的数字化新阶段。作为智能能源管理系统(Energy Management System, EMS)的进阶形态,MyEMS 的核心竞争…

用Go语言从零开始开发一个Prometheus Exporter

1 基本概念 1 prometheus介绍 Prometheus 是一个开源的系统监控和报警工具,专为高效采集和存储时间序列数据而设计,目前广泛用于监控微服务架构、云基础设施和Kubernetes集群等环境。Prometheus的架构图如下。export…