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

Symfony 7.1 + EasyAdmin Bundle部署Heroku后部分路由生成HTTP引发CORS错误的解决方法求助

Symfony 7.1 + EasyAdmin Bundle部署Heroku后部分路由生成HTTP引发CORS错误的解决方法求助

大家好,我现在遇到个头疼的问题,想请教下各位大佬。我用Symfony 7.1搭配EasyAdmin Bundle做实体列表和过滤功能,整个应用部署到Heroku后大部分功能都正常,但唯独一个问题:部分URL路由生成用的是HTTPS,另一些却是HTTP。

具体来说,CrudController的链接都是HTTPS的,但有些通过JavaScript发起的请求却生成HTTP链接。举个例子,在CrudController里用过滤器的时候,生成的过滤URL(比如...?crudAction=renderFilters ...)是HTTP的:

http://my-app.herokuapp.com/admin?crudAction=renderFilters&crudControllerFqcn...

这直接导致了CORS错误,因为浏览器的strict-origin-when-cross-origin策略拒绝了跨协议的请求。

我已经尝试过这些方法,但都没解决问题:

  • 在config/packages/routing.yaml里设置参数:
    parameters:
       router:
          request_context.scheme: https
    
  • 尝试修改config/packages/security.yaml里的配置强制HTTPS,但没效果
  • 修改config/routes.yaml给控制器路由指定HTTPS scheme:
    controllers:
      resource:
         path: ../src/Controller/
         namespace: App\Controller
      type: attribute
      schemes: [https] # 新增这一行
    
    结果反而导致无限重定向,路由直接崩了

后来我调试的时候想到给EasyAdmin Bundle打个补丁,修改EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator文件的第309行附近:

$urlType = null !== $context && false === $context->getAbsoluteUrls() ? UrlGeneratorInterface::RELATIVE_PATH : UrlGeneratorInterface::ABSOLUTE_URL;

// 新增这一行强制设置HTTPS
$this->urlGenerator->getContext()->setScheme('https');

$url = $this->urlGenerator->generate($this->dashboardRoute, $routeParameters, $urlType);

这么改确实能解决问题,但感觉不是个干净的方案,毕竟改了第三方包的源码,后续升级很麻烦。有没有更优雅的解决办法呢?

备注:内容来源于stack exchange,提问作者codiga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 09:40:29