昨天在本地调试前端项目时,调用后端接口突然报了跨域错误,浏览器控制台清一色的 Access-Control-Allow-Origin 提示,一开始以为是后端配置的问题,折腾半天发现其实前端自己就能解决,分享下我的排查和解决过程。
首先先确认问题原因:本地前端项目跑在 localhost:8080,后端接口地址是 http://192.168.1.100:8081,因为端口号不同,浏览器的同源策略就会拦截请求,这就是跨域的本质。
一开始我去问后端同事是不是没配置跨域头,同事查了说配置了,还发了 Postman 调用成功的截图。这时候我才意识到,可能是本地环境的问题,不用麻烦后端。
然后想到了 VS Code 的 Live Server 插件,其实它自带跨域支持。右键项目文件夹,选择 “Open with Live Server”,它会启动一个本地服务,默认端口是 5500,这时候再调用接口,跨域错误居然消失了!后来查了下原理,Live Server 会在响应头里自动添加 Access-Control-Allow-Origin: *,正好解决了跨域问题。
如果不用 Live Server,也可以用 Node.js 搭个简单的代理服务器,不过对前端来说,Live Server 确实是最省事的方案。遇到跨域别先慌着找后端,先试试本地解决,可能十分钟就能搞定~