【问题标题】:Switching Laravel assets between http and https in local and production在本地和生产环境中在 http 和 https 之间切换 Laravel 资产
【发布时间】:2014-05-14 17:27:02
【问题描述】:

我正在开发一个最终需要完全 HTTPS 的应用程序,但我暂时在 HTTP 上进行本地开发。

如果我在本地使用 URL::to_asset('path', false),那么当我切换到 HTTPS 时,我必须将它的每个实例都更改为 true。

目前我认为Config::get('app.https', true) 作为第二个参数将是解决此问题的最简单方法,但我想知道是否有更全系统的方法来确保您的资产遵循路线(例如,如果我有一个部分使用 HTTPS 路由的应用程序,如果 Laravel 自动判断你是否在 HTTPS 路由上并返回正确的资产链接,那就太好了)。

或者是否有可能让资产使用"//domain.tld/path/to/something" 方法

【问题讨论】:

    标签: https laravel laravel-4


    【解决方案1】:

    您可以使用 Request::secure() 来检查请求是否通过 HTTPS 完成,而不是通过配置手动设置。

    参考:laravel request information

    【讨论】:

    • 太棒了!谢谢你 - 绝对比使用 config::get 更整洁 :)
    • 当然,在每行资产中添加Request::secure() 不是一个好主意!对吗?
    • 我想你必须这样做,但例如Request::secure() 是一个非常便宜的电话。您也可以与asset('url', Request::secure()) (laravel.com/api/4.2/Illuminate/Routing/…) 合作使用它
    【解决方案2】:

    在您的网络服务器环境中将 HTTPS 设置为“开启”或“关闭”。这应该传播到 Laravel,并导致 http: 或 https: URL 生成。

    值得补充的是,我们在 Elastic Beanstalk 上运行 Laravel 应用程序。 EB 在负载均衡器处终止 SSL,因此 Laravel “认为”它是 HTTP,而实际上不是。我们使用重定向来确保所有来自外部的流量都是 HTTPS,并在 EB Dashboard 设置中设置 HTTPS=ON,这样资产就不会受到重定向的影响。

    【讨论】:

      【解决方案3】:

      在 Laravel 5x 上测试,你可以这样做:

      asset('path_to_file', \App::environment() == 'production')
      

      如果您在生产中,它将返回 true 并通过 https 加载资产,而在开发中返回 false,通过 http 加载。

      【讨论】:

        【解决方案4】:

        如果你使用 Laravel 5.3,你可以使用 Laravel asset() 辅助函数。它使用请求的当前方案(HTTP 或 HTTPS)加载资产 您可以找到更多详情here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-01
          • 1970-01-01
          • 2013-12-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-05
          • 2019-08-06
          相关资源
          最近更新 更多