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

6 天前
 liudewa

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

  1. 他们的 vue2 不跨域,我 vue3 跨域(应该关系不大),我以为是 vue3 原因,开发时使用本地代理开发的
  2. 现在部署后端用 tomcat 部署的,还是提档跨域
  3. 他们的线上项目(Kestrel 部署) 我也看了 确实不跨域
  4. 我以为是新版浏览器的原因 ,但我用我浏览器打开他们的项目也不跨域
  5. 现在他们说修改 怕影响线上其它项目
1932 次点击
所在节点    前端开发
34 条回复
fov6363
6 天前
@liudewa #17

发送请求时,有一个 withCredentials 的设置,如果需要携带 cookie 过去,那么仅设置 * 是不可以的,必须是你的 host:port ,是不是你调用这两个不同的 API ,这个参数不一样?

而且都是 ip 地址?这只是本地环境吧,如果只是本地环境有这个问题,自己加一层代理得了
fov6363
6 天前
@fov6363 补充一下 Cookie 也有一个 same-site + Secure 的设置会影响到跨域的问题,可以看一下 cookie 的设置
shadowyue
6 天前
这个帖应该能解答你所有的问题。
https://www.v2ex.com/t/1056504
草台班子理论永不过时。
liudewa
6 天前
@fov6363 #21 我本地能代理, 现在放线上有问题了 我们都是用的 ip 内部使用的
toy007
6 天前
报错提示很明了了,cridentials 模式是 include 的时候,Access-Control-Allow-Origin 不能是 *

假设你用的是 axios ,设置 withCredentials 为 false
yhxx
6 天前
《提问的智慧》

2 楼就已经很清晰的给出原因了,为啥还能扯这么多层啊
liudewa
6 天前
@toy007 #25 感谢 我以为这个要给 true 这个影响 cookie 但我们不用 cookie 我修改为 false
abcde123456789
6 天前
[img][/img]

也不排除是这个问题
liudewa
6 天前
@yhxx #26 2 楼是后端设置跨域,我这个是前端导致的
liudewa
6 天前
@toy007 #25 我扔给 gpt 他们给了 原生的方法 xhr.withCredentials = true 我没仔细看
yhxx
6 天前
@liudewa 2 楼和 25 楼说的是同一个问题啊。。。
tarasha
6 天前
借楼问下,本地打开 html 文件的那种请求头 origin:null ,应该怎么办?
liudewa
6 天前
@yhxx #31 仔细看了下是的 还是不熟悉 withCredentials 是设置 cookies 的
oneisall8955
6 天前
月经

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

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

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

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

© 2021 V2EX