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

跨域:浏览器有同源策略,但是为何 cdn 请求资源的时候不会有跨域限制?

在这里插入图片描述

提示:跨域:浏览器有同源策略,但是为何 cdn 请求资源的时候不会有跨域限制?


文章目录

  • 原因总结
      • 1. CDN 资源的加载方式规避了同源策略
      • 2. CDN 通常会正确设置 CORS 响应头
      • 3. 为什么同源策略不阻止 CDN 资源?
  • 总结


浏览器的 同源策略(Same-Origin Policy) 确实会限制跨域请求,但 CDN 资源请求通常不受限制,原因如下:

原因总结

1. CDN 资源的加载方式规避了同源策略

  • <script>、<link>、<img> 等标签默认允许跨域
    浏览器允许以下标签直接加载跨域资源(无需 CORS):
<!-- 这些标签不受同源策略限制 -->
<script src="https://cdn.example.com/jquery.js"></script>
<link href="https://cdn.example.com/style.css" rel="stylesheet">
<img src="https://cdn.example.com/image.png">
  • 原因:这些资源被视为静态文件,不会通过 JavaScript 直接访问内容,因此浏览器默认放行。

例外:如果通过 JavaScript 动态请求这些资源(例如 fetch 或 XMLHttpRequest),则会触发同源策略。

2. CDN 通常会正确设置 CORS 响应头

  • 即使是通过 JavaScript 动态加载的资源(如字体、API 请求),CDN 也会通过 CORS(跨域资源共享) 机制允许跨域访问:
  • CDN 服务器返回的响应头示例:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS

这样浏览器会允许跨域请求。

3. 为什么同源策略不阻止 CDN 资源?

  • 历史原因:早期的网页需要引用公共库(如 jQuery),如果禁止跨域,每个网站都要自己托管这些文件,效率极低。

  • 安全权衡

     		静态资源(JS/CSS/图片)通常不会直接窃取用户数据。真正的风险来自 通过 JavaScript 读取跨域数据(如 AJAX 请求),所以同源策略主要限制这类行为。
    

总结

场景是否受同源策略限制原因
通过<script>加载CDNJS❌ 否浏览器默认允许跨域静态资源加载
通过 fetch 请求 CDN 数据✅ 是(除非配置 CORS)需要服务器明确允许跨域(Access-Control-Allow-Origin)
CDN 的 CSS/图片❌ 否静态资源标签天生豁免同源策略
  • 核心逻辑:同源策略主要限制 通过 JavaScript 访问跨域数据,而 CDN 的静态资源加载通过标签或正确 CORS 配置规避了这一限制。
http://www.lryc.cn/news/622554.html

相关文章:

  • 【低成本扩容】动态扩容实战指南
  • AMD Ryzen AI Max+ 395四机并联:大语言模型集群推理深度测试
  • 开源 Arkts 鸿蒙应用 开发(十八)通讯--Ble低功耗蓝牙服务器
  • 昇腾AI自学Day2-- 深度学习基础工具与数学
  • 利用cursor+MCP实现浏览器自动化释放双手
  • vscode中使用CMake Tools生成compile_commands.json文件后,如何告诉clangd这个文件在哪里呢?
  • 新手向:Python列表、元组、集合和字典的用法对比
  • JavaScript 核心语法与实战笔记:从基础到面试高频题
  • macOS 中查看当前生效 shell 及配置文件的方法
  • linux网络基础
  • 二叉树的三种遍历方法
  • KVM虚拟化技术解析:从企业应用到个人创新的开源力量
  • 开源 Arkts 鸿蒙应用 开发(十七)通讯--http多文件下载
  • 4.6 Vue 3 中的模板引用 (Template Refs)
  • Vue中的数据渲染【4】
  • java 面试八股集锦
  • IO流-打印流
  • ROS相关的ubuntu基础教程
  • 移动互联网发展战略
  • Android面试指南(一)
  • C#WPF实战出真汁08--【消费开单】--餐桌面板展示
  • C#WPF实战出真汁09--【消费开单】--选择菜品
  • Linux软件编程--线程
  • socket编程UDP
  • 深度解析和鲸社区热门项目:电商双 11 美妆数据分析的细节与价值
  • AI Agents 2025年十大战略科技趋势
  • 【Java学习】锁、线程死锁、线程安全2
  • 【原理】C# 字段、属性对比及其底层实现
  • 使用npm/pnpm自身安装指定版本的pnpm
  • pnpm(Performant npm)的安装