网易首页 > 网易号 > 正文 申请入驻

前端开发踩坑实录:1个浏览器安全机制让90%新手栽了跟头

0
分享至


去年有个数据挺有意思——Stack Overflow上关于"Failed to Fetch"的提问,47%最终都指向同一个罪魁祸首。不是代码写错了,不是API挂了,而是一个叫CORS的东西。

更扎心的是,同样的请求在Postman里跑得飞快,一到浏览器就原地爆炸。这种"开发环境正常,生产环境翻车"的玄学,消耗了无数程序员的发量。

问题根源藏在浏览器的一个安全机制里:同源策略(Same-Origin Policy)。

浏览器把"同源"定义得很死:协议、域名、端口,三个要素必须完全一致。你的前端跑在http://127.0.0.1:5500,想请求https://youtube.com的接口?门儿没有。

CORS(跨域资源共享)就是用来协商这种"跨界合作"的。但协商有个前提:对方服务器得在响应头里写上Access-Control-Allow-Origin,明确说"我允许你来"。YouTube显然不会给随便一个本地页面开这个绿灯。

于是浏览器先发一个预检请求(preflight)探路,服务器没给通行证,请求直接被拦腰斩断。报错信息往往云山雾罩,新手看到"Failed to Fetch"四个字,第一反应是检查网络连接。

复现现场:一个注定要失败的Demo

GitHub上有个教学项目,专门用来演示这个坑。克隆下来,VS Code里点"Go Live",一个简陋的YouTube视频信息抓取页就跑起来了。

输入框里贴个视频链接,点击Fetch Info,按钮转两圈,然后——报错。控制台里红字刺眼,网络面板却干干净净,仿佛请求从未存在过。

这就是CERR的典型症状:请求被浏览器内部拦截,根本没发出去。你在Network标签页里看不到它,因为拦截发生在请求离开浏览器之前。


很多开发者在这里卡壳数小时,试图用mode: 'no-cors'蒙混过关,结果拿到一个opaque响应,啥数据也读不出来。这选项的真实作用是"我放弃读取响应",而非"绕过限制"。

浏览器的安全设计就是这样:要么服务器配合,要么你换个思路。

代理模式:把跨域变成"内部事务"

既然浏览器不让直接问YouTube,那就找个"自己人"代劳。代理服务器的核心逻辑很简单:前端只跟同源的服务器说话,服务器再去跟外部API打交道。

服务器之间没有同源策略,curl和Postman能成功的原因正在于此。代理就是把"服务器端自由"借给前端用。

具体实现上,Node.js搭个Express服务,前端请求/api/video-info?url=xxx,服务器收到后用自己的HTTP库(如axios)去抓YouTube页面,解析完把数据吐回去。全程没有跨域,浏览器挑不出毛病。

代码结构会变成这样:

proxy-version/
├── index.html # 还是原来的页面
├── styles.css # 样式不动
├── app.js # 改请求地址为相对路径
└── server.js # 新增的代理服务

前端代码的改动极小,把fetch('https://youtube.com/...')换成fetch('/api/video-info?url=...')即可。剩下的脏活累活,服务器默默承担。

生产环境的延伸思考


本地开发用代理很爽,但部署到线上怎么办?Vercel、Netlify这些平台都提供serverless函数,本质上还是代理模式的变体。你的"代理"跑在CDN边缘节点,延迟比自建服务器更低。

还有一种思路是配置反向代理,Nginx里写几行规则,把/api/*转发到目标服务器。这招对第三方API特别管用,还能顺便做缓存和限流。

但代理不是万能药。它引入了新的故障点——代理服务器挂了,前端照样抓瞎。还有数据隐私问题:用户把YouTube链接发给你的服务器,你得保证不滥用。

有些团队为了省事,直接把第三方API的密钥塞进前端代码,让代理带着密钥去请求。这等于把钥匙挂在门把手上,抓包就能拿走。

更稳妥的做法是:前端只传用户输入,密钥和签名逻辑全在服务器完成。

回到那个Demo项目,修复后的版本能正常抓取视频标题、缩略图和观看次数。同样的功能,差了一个代理层,体验天差地别。

很多前端框架的dev server都内置了代理配置,Vue的vue.config.js、React的setupProxy.js,本质上都是这个原理。开发时自动转发,部署时再换正式方案。

理解了代理模式,再看这些配置就不会觉得魔幻。它们不是框架的黑魔法,而是CORS约束下的必然选择。

那个YouTube Info项目的作者在后记里写了一段话:「我花了整整一个下午调试CORS,最后发现是浏览器在保护我。这种保护有时候像过度热心的保安——不分青红皂白拦下所有人,包括你自己。」

你最近一次被CORS拦住是什么时候?当时选了代理方案,还是说服后端改了响应头?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
二代刀片电池上车 9分钟充饱!第二代腾势D9预售:38.98万起

二代刀片电池上车 9分钟充饱!第二代腾势D9预售:38.98万起

快科技
2026-03-29 13:18:37
中国游客到朝鲜游玩,朝鲜人充满疑问:为什么中国人是这样的?

中国游客到朝鲜游玩,朝鲜人充满疑问:为什么中国人是这样的?

蜉蝣说
2026-03-28 18:26:48
出其不意的伊朗:多层次非对称下的正面博弈

出其不意的伊朗:多层次非对称下的正面博弈

红星新闻
2026-03-28 11:24:13
善恶有报!逼人民日报怒批、暗讽张雪峰,1300万网红终为荒唐买单

善恶有报!逼人民日报怒批、暗讽张雪峰,1300万网红终为荒唐买单

蔡蔡说史
2026-03-28 16:50:54
想拿中国尿素救春耕?先还钱!中国享受俄油优惠,印度彻底出局

想拿中国尿素救春耕?先还钱!中国享受俄油优惠,印度彻底出局

尘缘而亦
2026-03-29 01:03:28
大连一企业董事长行贿法官120万内幕:“被告打点法官竟要原告买单”

大连一企业董事长行贿法官120万内幕:“被告打点法官竟要原告买单”

白鹿新闻
2026-03-28 17:30:32
广东一店主下单寄递10箱茅台酒总价超12万元,司机用一张模糊“卸货照”虚假“送达”后失联,平台:已与警方确认找到司机,货物已追回

广东一店主下单寄递10箱茅台酒总价超12万元,司机用一张模糊“卸货照”虚假“送达”后失联,平台:已与警方确认找到司机,货物已追回

大象新闻
2026-03-27 21:45:04
女排名将周晓兰:曾和郎平齐名,退役后辞官赴美,如今过得咋样

女排名将周晓兰:曾和郎平齐名,退役后辞官赴美,如今过得咋样

小徐讲八卦
2026-02-15 16:20:07
公婆让我给小侄子红包888,她没给我儿,婆婆:你以后需要他帮助

公婆让我给小侄子红包888,她没给我儿,婆婆:你以后需要他帮助

清水家庭故事
2026-03-28 11:45:44
这是田曦薇的素颜照,你还能第一眼认出来她吗

这是田曦薇的素颜照,你还能第一眼认出来她吗

TVB的四小花
2026-03-29 00:11:41
父母把拆迁款全给弟弟,我10年没回家,昨天到电话:姐,爸不行了

父母把拆迁款全给弟弟,我10年没回家,昨天到电话:姐,爸不行了

真实人物采访
2026-03-28 12:40:10
张雪峰老师生前公开推荐过的3所大学,分数低就业好!

张雪峰老师生前公开推荐过的3所大学,分数低就业好!

高三倒计时
2026-03-26 17:52:46
随着马刺8连胜,森林狼惨败22分,西部最新排名出炉!灰熊第11

随着马刺8连胜,森林狼惨败22分,西部最新排名出炉!灰熊第11

薇说体育
2026-03-29 12:03:38
张雪峰的人生意义,在这一刻具象化了!

张雪峰的人生意义,在这一刻具象化了!

太阳来
2026-03-29 09:37:23
广东内线乾坤大挪移,争冠版图震撼重构

广东内线乾坤大挪移,争冠版图震撼重构

老癘体育解说
2026-03-29 09:56:50
张雪峰灵堂遗体让人泪目,追悼会流程曝光,细数其生前5大遗憾!

张雪峰灵堂遗体让人泪目,追悼会流程曝光,细数其生前5大遗憾!

古希腊掌管月桂的神
2026-03-27 22:13:19
小区楼上天天晚上都有女的大声叫。。。

小区楼上天天晚上都有女的大声叫。。。

微微热评
2025-12-24 00:26:04
4月“惹不起”的3生肖,遇贵人光芒照人,事业取得重大突破!

4月“惹不起”的3生肖,遇贵人光芒照人,事业取得重大突破!

毅谈生肖
2026-03-29 10:54:00
黄埔一期唯一被开除的学生,我党高级将领,蒋介石一生的死敌

黄埔一期唯一被开除的学生,我党高级将领,蒋介石一生的死敌

兴趣知识
2026-03-28 18:34:10
遇到麻烦了!菲律宾能源告急,马科斯开金口求中方:中国帮过我们

遇到麻烦了!菲律宾能源告急,马科斯开金口求中方:中国帮过我们

朝子亥
2026-03-29 13:10:03
2026-03-29 13:48:49
野生运营
野生运营
懂点产品,懂点AI,正在努力给平淡日子搞点新花样。
383文章数 5关注度
往期回顾 全部

科技要闻

马斯克承认xAI"建错了",11位创始人均离职

头条要闻

网约车司机被骗网贷后车内轻生:我不想死 但扛不住了

头条要闻

网约车司机被骗网贷后车内轻生:我不想死 但扛不住了

体育要闻

绝杀卫冕冠军后,他单手指天把胜利献给父亲

娱乐要闻

张凌赫事件持续升级!官方点名怒批

财经要闻

Kimi、Minimax 们的算力荒

汽车要闻

岚图泰山X8配置曝光 四激光雷达/华为新一代座舱

态度原创

本地
家居
亲子
手机
公开课

本地新闻

在潍坊待了三天,没遇到一个“潍坊人”

家居要闻

曲线华尔兹 现代简约

亲子要闻

睡着的两个姐妹,不安分的小样,妈妈在旁边心被萌化!

手机要闻

华为何刚预告小艺Claw新特性,可推每日健康报告、制定运动计划

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版