你有没有过这样的经历?前端页面想调用一个第三方API,控制台却弹出刺眼的“跨域错误”?这时候你可能会挠头:搞定跨域,必须得搭个服务器吗?
先搞懂“跨域”是什么——它其实是浏览器的同源策略在起作用。简单说,浏览器就像个“安全门卫”,如果你的页面(比如http://localhost:3000)想请求另一个不同协议、域名或端口的资源(比如https://api.example.com),门卫会出于安全考虑拦截这个请求,这就是跨域。
那跨域需要服务器吗?答案是:大部分场景下需要,但要看具体情况。

场景1:自己的后端接口跨域
最直接的办法是在服务器端配置CORS(跨域资源共享)。比如用Node.js的Express框架,只需加几行代码:
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, POST');
这样浏览器就会允许前端请求了。显然,这得靠服务器帮忙。
场景2:调用第三方开放API
如果对方API已经开启了CORS(比如百度地图、天气API),你前端直接调用就行——但这本质是对方服务器帮你解决了跨域,还是依赖服务器的支持。如果对方没开CORS,你就得自己想办法了。
场景3:前端想“绕过”服务器?
早年的JSONP能做到,但它只能支持GET请求,还存在安全风险,现在几乎被淘汰。开发时用webpack的devServer proxy代理请求,看似是前端操作,其实devServer本身就是个小型服务器,帮你转发请求到目标API,绕不开服务器。生产环境中,Nginx反向代理也是常用方案,同样需要服务器。
总结
跨域的解决离不开服务器:要么是你自己的后端配置CORS,要么依赖第三方服务器的CORS支持,要么用代理服务器转发请求。浏览器的安全限制摆在那儿,前端单独是搞不定的。下次遇到跨域,先看看是哪种场景,选对服务器方案就好~