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

能否从Cloud Run实例访问GCP元数据端点?解决HTTPS重定向问题

解决Cloud Run访问元数据端点的重定向问题

直接改用HTTPS元数据端点

Cloud Run的元数据服务原生支持HTTPS访问,直接调用https://metadata.google.internal即可绕过HTTP重定向问题。必须在请求头中添加Metadata-Flavor: Google,否则会返回403权限错误。

示例Python代码:

import requests

def get_auth_token(target_service_url):
    # 替换target_service_url为受保护Cloud Run的完整URL
    metadata_url = f"https://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience={target_service_url}"
    headers = {"Metadata-Flavor": "Google"}
    resp = requests.get(metadata_url, headers=headers)
    resp.raise_for_status()
    return resp.text

关于HTTP重定向的说明

Cloud Run平台默认会强制将http://metadata的请求重定向到HTTPS端点,这是内置的安全机制,无法通过CSP规则修改——因为CSP控制的是浏览器端的资源加载逻辑,而元数据访问是后端服务发起的请求,不受CSP约束。

调用受保护Cloud Run的完整流程

  1. 从HTTPS元数据端点获取身份令牌:注意要在请求URL的audience参数中填入目标受保护Cloud Run的完整URL,确保令牌的受众匹配
  2. 调用目标服务时,将令牌放入Authorization: Bearer <token>请求头中

示例调用代码:

import requests

# 替换为你的受保护Cloud Run服务地址
target_url = "https://your-protected-service.run.app/api/endpoint"
token = get_auth_token(target_url)

headers = {"Authorization": f"Bearer {token}"}
resp = requests.get(target_url, headers=headers)
resp.raise_for_status()
print(resp.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:31:00