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

Golang WebServer部署Cloud Shell后,Postman请求预览URL返回HTML认证页

问题:Google Cloud Shell Web预览URL通过Postman请求返回登录HTML而非JSON响应

我在Google Cloud Shell Editor中开发Golang WebServer,尝试通过Postman向运行在8080端口生成的Web预览URL发送POST请求(https://8080-cs-277337641258-default.cs-us-east1-rtep.cloudshell.dev/api/userToken)测试接口,预期返回JSON响应,但实际收到Google账号登录的HTML页面(响应内容包含<base href="https://accounts.google.com/v3/signin/">等登录页面代码)。

已完成操作:

  • 参考相关文档生成OAuth 2.0授权令牌
  • 配置Web应用类型的API凭证Client ID
  • 在Postman中完成授权令牌配置并成功生成令牌

需要确认是否遗漏步骤,或该请求方式是否不可行。


原因及解决办法

1. Cloud Shell Web预览URL的核心限制

*-cloudshell.dev域名的访问权限绑定到当前Cloud Shell会话的浏览器会话Cookie,而非HTTP请求头中的OAuth令牌。Google会强制对该域名的所有请求进行前置登录校验,Postman的请求没有携带浏览器会话的Cookie,因此会被重定向到登录页面——这是机制限制,无法通过携带OAuth令牌绕过。

2. 可行替代方案:端口转发+本地请求

直接通过本地端口转发访问Cloud Shell中的WebServer:

  • 保持Cloud Shell中的WebServer在8080端口运行
  • 在本地终端执行端口转发命令(需先安装gcloud CLI并登录):
    gcloud cloud-shell ssh -- -L 8080:localhost:8080
    
  • Postman直接请求http://localhost:8080/api/userToken,此时请求会通过端口转发直达Cloud Shell的WebServer,无需经过Google的登录校验

3. 公网测试替代:部署到Cloud Run

如果需要公网可访问的测试地址,可将WebServer部署到Cloud Run:

  • 编写Dockerfile将Golang服务容器化
  • 执行部署命令(测试阶段可允许未授权访问):
    gcloud run deploy <服务名> --source . --allow-unauthenticated
    
  • 使用Cloud Run分配的公网URL在Postman中请求,此时可正常处理OAuth令牌校验逻辑

4. 代码侧排查

确认Golang WebServer的/api/userToken路由逻辑:

  • 检查是否正确处理POST请求
  • 确认令牌校验逻辑无误,不会在校验失败时返回HTML或重定向

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:20:57