在本地和生产中切换http和https之间的Laravel资产

时间:2014-04-03 05:01:17

标签: https laravel laravel-4

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

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

目前我认为Config::get('app.https', true)作为第二个论点是解决这个问题的最简单方法,但我想知道是否有更全系统的方法来确保您的资产遵循路由(例如,如果我有一个部分使用HTTPS路由的应用程序,那么如果Laravel自动确定您是否使用HTTPS路由并返回正确的资产链接,那将会很不错。)

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

4 个答案:

答案 0 :(得分:6)

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

参考:laravel request information

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:3)

在Web服务器环境中将HTTPS设置为'on'或'off'。这应该传播到Laravel,并导致http:或https:URL生成。

可能值得补充一点,我们在Elastic Beanstalk上运行我们的Laravel应用程序。 EB在Load Balancer处终止SSL,因此Laravel“认为”它是HTTP,而不是。我们使用重定向来确保所有流量都来自外部,并在EB Dashboard设置中设置HTTPS = ON,以便资产不受重定向的影响。

答案 3 :(得分:0)

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