跨域问题,整不明白了,这边是前端,求解

55 天前
 liudewa

我们的项目调了隔壁组的两个接口,两台服务器上的用的 iis 部署的,1 个接口返回 access-control-allow-headers:* 一个返回的是 access-control-allow-headers: 对应域名(这个正常调用),返回 * 的 但我开发的时候就碰到跨域了,就要求隔壁组返回和第一个请求一样的说 * 新浏览器不行了,但他们给我演示他们的项目(vue2)就不会跨域, 现在不解的有几个地方:

  1. 他们的 vue2 不跨域,我 vue3 跨域(应该关系不大),我以为是 vue3 原因,开发时使用本地代理开发的
  2. 现在部署后端用 tomcat 部署的,还是提档跨域
  3. 他们的线上项目(Kestrel 部署) 我也看了 确实不跨域
  4. 我以为是新版浏览器的原因 ,但我用我浏览器打开他们的项目也不跨域
  5. 现在他们说修改 怕影响线上其它项目
2467 次点击
所在节点    前端开发
34 条回复
laobobo
55 天前
给出信息不够,猜测还是 header 配置问题,仔细对比一下。
USDT
55 天前
和框架没关系哈,带 cookie 的 CORS 不允许写*,所以要后端老老实实写 access-control-allow-origin: $request_origin 就好

所以一般来说想跨域后端无脑写传过来的 origin 是最保险的,当然如果确定不会用到 cookie 写*最简单粗暴
zsj1029
55 天前
把你的代码扔到他的容器去跑,或者同域名地址
否则就让加头允许
bzw875
55 天前
[access-control-allow-headers: 对应域名] 不认识英文吗,headers 为什么放域名?
配置 [*] 就行
以 vite 为例代理服务器请求要转发 header
server: {
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
onProxyReq: (proxyReq, req, res) => {
proxyReq.setHeader('X-Custom-Header', 'custom-value');
},
},
},
},
liudewa
55 天前
@bzw875 #4 你这是代理
liudewa
55 天前
@USDT #2 你这是 nginx 吧 现在隔壁组返回的 * 关键他们的业务 能用 不同的域名
liudewa
55 天前
@zsj1029 #3 加了 * 他们级的业务都正常使用,(不同服务器的),我调用 出现跨域了 浏览器报 * 不能用
Xu3Xan89YsA7oP64
55 天前
也别让他们改了,自己去适配吧。搭个 BFF 透传,或者让你们的后端透传一下
liudewa
55 天前
@laobobo #1 他们组的业务(本地开发和线上的) 正常使用
liudewa
55 天前
@shizhibuyu2023 #8 简单问题复杂化了吧
Xu3Xan89YsA7oP64
55 天前
@liudewa #10 看了下你补充了这些接口是公共接口,那就让隔壁组搞定啊,帮他们看看 Access-Control-Allow-[Origin | Headers | Method] 这几个头哪个有问题。你又不发出来,这里的人谁知道啊
klo424
55 天前
注意解题思路。

首先,把你跨域的错误信息,原封不动的贴出来。

其次,他们 vue2 不夸域,就把他们请求的代码贴出来,再把你 vue3 自己的代码贴出来,让大家做个对比。

然后,确定 vue2 和服务端 iis 是否在同一个项目/容器内,你 vue3 与服务端是否在同域。

最后,要完整的跨域配置,毕竟跨域不止 access-control-allow-headers 这一个配置。
Niphor
55 天前
如果请求中携带了身份信息,也就是 Cookie ,不能使用 *
liudewa
55 天前
liudewa
55 天前
@klo424 #12 好的哥 14 楼
liudewa
55 天前
@shizhibuyu2023 #11 14 楼
liudewa
55 天前
@liudewa #14 下面是正常的 也是两个不同端口, 上面是我的提示跨域的,预检测就没过去
liudewa
55 天前
@Niphor #13 我们都是 header 里面的 token 没用 cookie
Nosub
55 天前
CORS 的实现原理以及 Spring 实战
https://nosub.net/posts/p/165
liudewa
55 天前
@laobobo #1 14 楼放了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1092705

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX