我们的项目调了隔壁组的两个接口,两台服务器上的用的 iis 部署的,1 个接口返回 access-control-allow-headers:* 一个返回的是 access-control-allow-headers: 对应域名(这个正常调用),返回 * 的 但我开发的时候就碰到跨域了,就要求隔壁组返回和第一个请求一样的说 * 新浏览器不行了,但他们给我演示他们的项目(vue2)就不会跨域, 现在不解的有几个地方:
1
laobobo 4 天前
给出信息不够,猜测还是 header 配置问题,仔细对比一下。
|
2
USDT 4 天前 1
和框架没关系哈,带 cookie 的 CORS 不允许写*,所以要后端老老实实写 access-control-allow-origin: $request_origin 就好
所以一般来说想跨域后端无脑写传过来的 origin 是最保险的,当然如果确定不会用到 cookie 写*最简单粗暴 |
3
zsj1029 4 天前
把你的代码扔到他的容器去跑,或者同域名地址
否则就让加头允许 |
4
bzw875 4 天前
[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'); }, }, }, }, |
8
Xu3Xan89YsA7oP64 4 天前
也别让他们改了,自己去适配吧。搭个 BFF 透传,或者让你们的后端透传一下
|
10
liudewa OP @shizhibuyu2023 #8 简单问题复杂化了吧
|
11
Xu3Xan89YsA7oP64 4 天前
@liudewa #10 看了下你补充了这些接口是公共接口,那就让隔壁组搞定啊,帮他们看看 Access-Control-Allow-[Origin | Headers | Method] 这几个头哪个有问题。你又不发出来,这里的人谁知道啊
|
12
klo424 4 天前 1
注意解题思路。
首先,把你跨域的错误信息,原封不动的贴出来。 其次,他们 vue2 不夸域,就把他们请求的代码贴出来,再把你 vue3 自己的代码贴出来,让大家做个对比。 然后,确定 vue2 和服务端 iis 是否在同一个项目/容器内,你 vue3 与服务端是否在同域。 最后,要完整的跨域配置,毕竟跨域不止 access-control-allow-headers 这一个配置。 |
13
Niphor 4 天前
如果请求中携带了身份信息,也就是 Cookie ,不能使用 *
|
14
liudewa OP |
16
liudewa OP @shizhibuyu2023 #11 14 楼
|
19
Nosub 4 天前 via iPhone 1
CORS 的实现原理以及 Spring 实战
https://nosub.net/posts/p/165 |
21
fov6363 4 天前
@liudewa #17
发送请求时,有一个 withCredentials 的设置,如果需要携带 cookie 过去,那么仅设置 * 是不可以的,必须是你的 host:port ,是不是你调用这两个不同的 API ,这个参数不一样? 而且都是 ip 地址?这只是本地环境吧,如果只是本地环境有这个问题,自己加一层代理得了 |
23
shadowyue 4 天前 1
|
25
toy007 4 天前 2
报错提示很明了了,cridentials 模式是 include 的时候,Access-Control-Allow-Origin 不能是 *
假设你用的是 axios ,设置 withCredentials 为 false |
26
yhxx 4 天前
《提问的智慧》
2 楼就已经很清晰的给出原因了,为啥还能扯这么多层啊 |
28
abcde123456789 4 天前 1
|
32
tarasha 4 天前
借楼问下,本地打开 html 文件的那种请求头 origin:null ,应该怎么办?
|
34
oneisall8955 3 天前
月经
|