很多新手做前后端分离,前端页面是localhost:3000,后端接口是localhost:8000,浏览器控制台报"跨域错误",接口请求发不出去,今天说一下这个问题的基础解决办法。
为什么会跨域
浏览器的安全策略,不同域名、不同端口、不同协议,前端不能直接请求对方的接口,这是为了安全,不是你代码写错了。
最简单的解决方法:后端开CORS
后端接口那边,加一行响应头,允许前端的域名访问,比如FastAPI加个中间件,允许所有来源开发用,生产环境就把前端域名加进去。改完重启后端,跨域就通了,不用改前端代码。
开发阶段临时解决
前端开发工具里配个代理,把请求转发到后端,浏览器看到的请求都是同一个域名,就不会跨域了,Vue、Vite、React都自带这个代理配置,改一行配置就行。
注意事项
生产环境别直接允许所有域名跨域,把允许的来源改成你自己的前端域名,不然别人的网站也能调用你的接口,有安全风险。
跨域是前端开发最常见的入门坑,知道了原理,解决起来很简单,别一看到红错误就慌。
本站源码来源于网络收集修改或者交换,甚至可能并非原创,如遇未经考证信息需持审慎态度。若有疑问,可联系本站处理。
0