大家都是草台班子😂,我干了这么多年开发,能把跨域问题说清楚的人也没几个😅

查看 777|回复 101
GloryIsMine   
但是在浏览器环境下,为了安全,浏览器只允许 js 访问固定的几个响应头。
----
如何理解这句话,例如接口返回了不允许的响应头,浏览器报跨域错误吗
yuezhiyuan   
这种问题在配置对象存储服务的时候也会遇到吧 不算小众问题吧
zliea   
跨域比想象中要复杂许多,例如 Access-Control-Allow-Origin: * 等于*时另外个跨域 cookie 的参数就不能等于 true
另外受 cdn 、nginx 的影响,响应头会被不小心更改到,导致产生跨域
azhangbing   
不过一个项目开发的时候,如果项目组前后台沟通流畅的话,提前规划接口与前台页面的路径。
比如
{BASEURL}/yewuA/h5/是前台部署路径,{BASEURL}/yewuA/api/是后台部署路径。
前端可以控制 baseurl 放在不同环境的环境变量中打包。
前端脚手架来解决跨域问题是可以的,总不能现在还是让前端启动配置一个和测试生产环境一样的 nginx 来调试吧。
现在前端由于是编译的,没法做到使用类似../../这种相对路径请求接口,但前端接口请求一定不能是完整地址待域名端口(类似 http://域名:端口/)这种,一定要是直接到根这种。
zdw189803631   
因为跨域限制是古早时候 浏览器的同源策略 那时候一般都放在同个域名,端口下的 很早很早了
xiaochena   
跨域是浏览器行为
ilvsxk   
@bluicezhen Access-Control-Allow-Origin: * 就不能带 cookie 了哦
iOCZS   
跨域的问题不只是原理,你以为理解了,MDN 那个文档看过无数遍了,但是每次和前端对接都会出现新的问题,xhr ,fetch ,axios ,不同的库对 cors 的使用方法和处理方式不同,烦人的很,而且现在的跨域限制的更多了,以前能行的办法突然发现某些情况下又不行了。
encro   
人们制定了很多规则,但是又不善于记忆规则。
sofm   
讲点核心的:
首先,你得理解为什么浏览器要限制跨域:
1 ,比如我公司的静态 js 和图片,被某大流量网站直接引用了,我流量不直接被刷爆?
2 ,某域名直接 iframe 之类嵌套,或者引用我的资料,打着李逵额名号,其实是李鬼。
所以,浏览器限制了跨域请求。
问:那么,我们开发时,想要访问线上接口怎么办?
答:我们可以用 vite 之类 nodejs 的代理功能,通过代理访问线上接口,代理一词的意思是我们访问本地的接口,代理服务器通过本地程序(非浏览器)转发到线上接口。
问:如果我们确实有线上项目的跨域请求的需求怎么办?
答:我们可以在服务器设置 Access-Control-Allow-Origin ,将我们自己人加入白名单。
跨域,就是这么简单!
您需要登录后才可以回帖 登录 | 立即注册

返回顶部