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

Mercure部署至GCP预发布环境遇401未授权问题排查求助

问题:Symfony 6.4 + Mercure 部署至GCP预发布环境后出现401未授权错误

本地Docker Compose环境(正常工作)

Mercure服务环境变量配置如下:

SERVER_NAME: ':7999'
PORT: 7999
MERCURE_PUBLISHER_JWT_KEY: '!MercureDevelopmentSigningKeyLongEnough!'
MERCURE_SUBSCRIBER_JWT_KEY: '!MercureDevelopmentSigningKeyLongEnough!'
MERCURE_EXTRA_DIRECTIVES: 'cors_origins https://app.domain.local'

客户端订阅主题代码:

window.eventSource = new EventSource(
        "{{ mercure(getMercureSubscribedTopics(), {'subscribe': getMercureSubscribedTopics()})|escape('js') }}",
        {
            withCredentials: true
        });

GCP预发布环境异常情况

将应用迁移至GCP预发布环境后,客户端订阅时出现401未授权错误。根据Mercure故障排查文档,日志应包含错误原因,但无法获取相关信息:

  • 即使添加DEBUG=debug或MERCURE_EXTRA_DIRECTIVES=debug环境变量,GCP Cloud Run服务输出无变化
  • 当前容器配置的环境变量:
    • SERVER_NAME: :80
    • MERCURE_SUBSCRIBER_JWT_KEY(来自GCP密钥管理)
    • MERCURE_PUBLISHER_JWT_KEY(来自GCP密钥管理)
  • Mercure通过负载均衡服务代理/.well-known/mercure路径,日志仅能看到请求记录和401响应,无错误详情

已完成的排查动作

  • 检查浏览器控制台,确认客户端请求已携带JWT
  • 通过jwt.io验证令牌有效,签名与密钥匹配
  • 反复核对客户端与Mercure服务使用的密钥完全一致
  • 尝试添加MERCURE_EXTRA_DIRECTIVES=cors_origins https://my.staging.domain.com(虽错误与CORS无关),问题仍存在

待解决疑问

  1. 还需排查哪些内容定位401错误原因?
  2. 如何获取Mercure容器/服务的详细日志信息?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 18:04:58