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

290 天前
 liudewa

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

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

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

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

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

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

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

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

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

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

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

© 2021 V2EX