【问题标题】:Laravel with custom https domain on heroku not generating https routes在heroku上具有自定义https域的Laravel不生成https路由
【发布时间】:2016-11-01 15:52:55
【问题描述】:

我有一个在 Heroku 上运行的 Laravel 5.2 应用程序,其自定义域由 Cloudflare 处理。自定义域使用 CNAME 将其指向 heroku 域。我在 Cloudflare 上启用了完整的 ssl 以允许 https。 heroku url 本身启用了 ssl,所以这没问题。

生成路由时(例如,通过route('home') 之类的东西,它包括整个自定义域,但使用http 而不是https。这通常会导致浏览器控制台警告如下:

混合内容:“https://example.com”处的页面已加载到 安全连接,但包含针对不安全的表单 端点'http://example.com/endpoint'。应该做这个端点 可通过安全连接获得。

知道为什么 Laravel 路由生成器不使用 https 吗?

【问题讨论】:

    标签: php laravel ssl heroku


    【解决方案1】:

    在您的 .env 文件中,确保您的 APP_URL 显示 https

    【讨论】:

    • 这似乎不起作用。我的印象是 app.url 配置值仅用于工匠命令。一个理想的解决方案就是生成没有域部分的路由。例如。 /endpoint 而不是 http://example.com/endpoint
    • 啊,看看下面的链接,那里有一个答案,包括URL::forceSchema('https');。你可以把它放在你的AppServiceProviderlaravel.io/forum/12-26-2014-routing-with-https
    【解决方案2】:

    你可以告诉路由充当https

    Route::get('signin', ['uses' => 'AuthController@sign', 'https']);
    

    确保您没有硬编码任何资产。

    【讨论】:

    • 这不是一个好的解决方案,因为 1) 我必须手动更新路由文件中的每条路由。 2)我的开发环境不是https,所以这会导致开发问题。该应用程序应该能够检测是否启用了 ssl。我觉得这个问题是由于我使用 cloudflare ssl 和 heruku 的方式造成的。但它仍然是端到端的https。
    • 改用env('https'),然后在您的.env 中添加HTTPS=https 或'HTTPS=http'。
    【解决方案3】:

    这里提交迟了,但对我来说这有效。您可以通过添加隐式指定来指定路由应该是 HTTP 还是 HTTPS

    URL::forceScheme('https');

    在 web.php 或 api.php 文件的底部。 URL 实现于:

    Illuminate\Support\Facades\URL;
    

    我已经在 Laravel 8.xx 上对其进行了测试,它的工作原理总是生成 HTTPS 路由。您只需在 Github 上的 Laravel/framework 存储库中稍作挖掘即可找到没有官方文档的 find many features

    【讨论】:

      【解决方案4】:

      对于尚未解决此问题的任何人,请尝试这样做:

      在您的config/app.php 上编辑这些值:

      return [
        //...
      
        'url' => env('APP_URL', 'https://yourdomainexample.herokuapp.com'),
        'asset_url' => env('ASSET_URL', 'https://yourdomainexample.herokuapp.com'),
      ]
      

      【讨论】:

        猜你喜欢
        • 2017-11-30
        • 1970-01-01
        • 2014-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-25
        • 2016-02-20
        相关资源
        最近更新 更多