前端面试中,同源策略是必考题,但CDN资源为何能无视它?90%的候选人答错关键点
作为前端工程师,你是否曾在面试中被问:“浏览器有同源策略,为什么CDN资源不受影响?” 这问题看似基础,却直指你对浏览器安全机制本质的理解深度。本文带你彻底拆解这个高频考点!
核心原理:同源策略(Same-Origin Policy)限制的是不同源脚本读取对方数据的能力,而非发送请求本身。
https://www.example.com:443
XMLHttpRequest
/ Fetch API
:限制读取跨域响应内容(除非CORS允许)localStorage
/ IndexedDB
:限制不同源页面访问iframe
内容:限制不同源父页面访问子页面DOM// 尝试用Fetch请求跨域资源(会触发CORS检查)
fetch('https://api.other-site.com/data')
.then(response => response.json()) // 此处可能被浏览器拦截!
.then(data => console.log(data))
.catch(err => console.error('跨域请求被阻止:', err));
💡 重要认知拐点:同源策略是浏览器给JavaScript代码设置的“数据访问监狱”,而非“网络请求监狱”。你的代码可以发起任意跨域请求,但浏览器可能不让你看响应内容。
核心原理:某些HTML标签加载外部资源时,默认豁免同源策略读取限制,这是浏览器的主动设计!
<script src="...">
(加载JS脚本)<img src="...">
(加载图片)<link rel="stylesheet" href="...">
(加载CSS)<video>
/ <audio>
(加载媒体资源)<iframe>
(加载文档,但受限于同源策略访问其内容)<script>
、<link>
、<img>
标签引入!<!-- 跨域加载CDN资源完全合法 -->
<script src="https://cdn.jsdelivr.net/npm/vue@3.2.37/dist/vue.global.js"></script>
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css">
<img src="https://my-cdn.com/images/logo.png">
⚠️ 重要安全补充:豁免标签不等于绝对安全!恶意脚本可能通过
<script>
加载并执行,因此CDN资源需确保可信(如SRI校验)。
核心区别:CORS解决的是通过JS发起的跨域请求的权限问题,而CDN资源属于豁免标签的被动加载。
OPTIONS
预检请求(Preflight)Access-Control-Allow-Origin
等头声明允许的源<script>
/<img>
等标签加载,属于豁免范畴Access-Control-Allow-Origin
,资源依然能加载使用!<img>
/<script>
标签加载资源,同样不受同源策略限制,这是豁免标签的特性延伸。// 动态创建<script>加载CDN资源(不受同源策略限制)
const script = document.createElement('script');
script.src = 'https://cdn.example.com/some-library.js';
document.head.appendChild(script); // 浏览器会加载并执行,无跨域拦截
🔍 深度扩展:
@font-face
字体跨域是个例外!通过CSS引入的跨域Web字体需要CORS响应头,否则浏览器可能阻止使用。这是因字体可能被JS通过Canvas API提取分析,构成信息泄露风险。
<script>
/<img>
/<link>
等资源标签具有豁免权,其加载的跨域资源不受同源策略限制。本质归纳:CDN跨域并非“绕过”同源策略,而是浏览器主动为特定资源类型开放的安全通道。理解这点,才算真正看透同源策略的设计哲学!
<script>
、<img>
、<link>
等标签加载资源不受同源策略限制。加分项:
@font-face
需要CORS的例外情况integrity
属性)对CDN资源安全的意义情绪价值拉满:
“能讲清这个问题,说明你已跳出‘死记API’的层面,真正理解了浏览器安全模型的底层逻辑——这是区分优秀工程师的关键一步。下次面试再遇此题,请自信微笑:是时候展现真正的技术洞察了!”
欢迎大家访问我们的刷题网站(https://fe.ecool.fun/)或者小程序 前端面试题宝典 进行刷题,1200多道全网最全的前端面试题,让你一网打尽。近期还有会员卡免费领,全场打折的活动不容错过!刷题会员周卡免费送
有会员购买、辅导咨询的小伙伴,可以通过下面的二维码,联系我们的小助手。