You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Cloud Workstation跨域故障:CORS头未随302重定向传递

解决Google Cloud Workstation多服务开发中的CORS与重定向问题

问题本质

Cloud Workstation的公网请求会经过Google代理层,代理要求请求携带WorkstationJwt Cookie才会转发到目标实例。跨服务调用或外部客户端请求时,Cookie无法正确传递,导致触发OAuth重定向流程,最终原始请求无法抵达目标服务。

可行解决方案

1. 同工作站内服务调用:使用本地地址

在Cloud Workstation上的Service 2调用Service 1时,直接使用本地环回地址(如http://localhost:${service1-port})或内部私有网络地址,绕过Google的公网代理层。这种方式无需处理CORS配置,也不会触发代理的身份验证重定向。

2. 外部客户端(本地)访问:通过SSH隧道转发端口

使用gcloud命令建立SSH隧道,将本地端口映射到Cloud Workstation内的Service 1端口:

gcloud compute ssh ${workstation-instance-name} --zone=${your-zone} -- -L 8080:localhost:${service1-port}

替换上述命令中的参数后,本地客户端直接访问http://localhost:8080即可,无需通过Cloud Workstation的公网域名,彻底避免代理验证和重定向问题。

3. 跨子域名调用的Cookie传递(有限适用)

如果必须使用Cloud Workstation的公网域名进行跨服务调用:

  • 确保前端请求设置withCredentials: true(针对Web应用的XMLHttpRequest/Fetch请求)
  • 在Service 1的CORS配置中添加Access-Control-Allow-Credentials: true,并指定允许的来源为Service 2的公网域名

注意:由于WorkstationJwt Cookie是Google设置的HTTPOnly Cookie,跨子域名传递可能受限于Cookie的域属性,此方法不一定能生效,优先推荐前两种方案。

验证步骤

  • 在Cloud Workstation本地执行curl http://localhost:${service1-port}/${api-route},确认服务正常响应。
  • 建立SSH隧道后,本地执行curl http://localhost:8080/${api-route},验证外部请求可正常抵达服务。

内容的提问来源于stack exchange,提问作者Andrew Maxwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 11:19:54