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

Symfony 5.3+Mercure+Vue调用本地Mercure端点报SSL连接错误

问题根因

  • SSL连接错误是Symfony HTTP客户端不信任本地Mercure服务的自签名SSL证书,此前配置全局verify_peer: false未生效,是因为Mercure发布器使用独立配置的HTTP客户端,未继承全局HTTP客户端配置。
  • 切换HTTP协议后返回401与CORS无关,CORS仅作用于浏览器端跨域请求,服务端调用返回401是Mercure发布端鉴权失败导致。

解决方案

方案1:安全方案(推荐,无需关闭证书校验)

  1. 导出Symfony本地Web服务器的自签名根证书,通过symfony server:ca:install命令生成的证书默认存放于~/.symfony/certs/rootCA.pem路径。
  2. 单独为Mercure配置证书信任,无需修改全局HTTP客户端配置:
# config/packages/dev/mercure.yaml
mercure:
    hubs:
        default:
            url: '%env(MERCURE_URL)%'
            public_url: '%env(MERCURE_PUBLIC_URL)%'
            jwt:
                secret: '%env(MERCURE_JWT_SECRET)%'
                publish: ['*']
                subscribe: ['*']
            http_client_options:
                cafile: '~/.symfony/certs/rootCA.pem' # 替换为你本地实际的证书路径

方案2:开发环境临时方案(仅本地使用)

直接在Mercure配置中单独关闭证书校验,不影响其他HTTP请求的安全性:

# config/packages/dev/mercure.yaml
mercure:
    hubs:
        default:
            http_client_options:
                verify_peer: false
                verify_host: false

HTTP协议401报错修复

如果要使用HTTP协议访问Mercure,需确认两项配置:

  • .env文件中的MERCURE_JWT_SECRET值与Mercure服务启动时配置的JWT密钥完全一致,不要包含多余的引号、空格。
  • Mercure启动参数中allow_insecure配置为true,HTTP协议下需开启该配置才能正常处理发布请求。

内容的提问来源于stack exchange,提问作者Cristian Rodriguez Navarro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:06:03