Laravel使用AWS不安全地服务资产

Laravel使用AWS不安全地服务资产,laravel,amazon-web-services,https,amazon-elastic-beanstalk,amazon-elb,Laravel,Amazon Web Services,Https,Amazon Elastic Beanstalk,Amazon Elb,在我的新项目中,当我将应用程序部署到https://域时,每个{{{asset()}}和每个{{route()}都通过http提供服务(这会导致浏览器中的“混合内容”安全问题) 我将AWS与负载平衡的Elastic Beanstalk应用程序一起使用 我已经尝试确保APP\u URL正确设置为https,我知道我可以使用或,但是我以前的项目不需要这样做,我想知道为什么 我怎样才能知道Laravel在哪里对协议做出决定?我想找到问题的根源,而不是掩盖它。我相信这就是你想要的。 这里有一个例子: &

在我的新项目中,当我将应用程序部署到https://域时,每个
{{{asset()}}
和每个
{{route()}
都通过
http
提供服务(这会导致浏览器中的“混合内容”安全问题)

我将AWS与负载平衡的Elastic Beanstalk应用程序一起使用

我已经尝试确保
APP\u URL
正确设置为https,我知道我可以使用或,但是我以前的项目不需要这样做,我想知道为什么

我怎样才能知道Laravel在哪里对协议做出决定?我想找到问题的根源,而不是掩盖它。

我相信这就是你想要的。
这里有一个例子:

<link href="{{ secure_asset('assets/mdi/css/materialdesignicons.min.css') }}" media="all" rel="stylesheet" type="text/css" />

更新: 更好的解决方案(在laravel 5.4中测试):


这是一个简单的问题。如果您正在使用AWS,则需要更改配置。它非常简单,像往常一样,Laravel的文档提供了解决方案。您可以在此处阅读更多内容:

作为AWS Elastic Beanstalk用户,我所要做的就是编辑
app/Http/Middleware/TrustProxies.php

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array
     */
    protected $proxies = '*';

    /**
     * The headers that should be used to detect proxies.
     *
     * @var int
     */
    protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
}

现在一切都好了。设置新项目时容易出错。

我知道我可以使用
secure\u asset
forceScheme
,但是我以前的项目不需要这样做,我想了解原因。现在使用的是哪一版本的laravel,您以前使用过哪一版本?previous:5.5。当前版本:5.6。我认为路径是在URL设置的帮助下生成的。尝试检查你的.env文件。也许您已经将URL定义为类似URL=?您的SSL证书是否由AWS负载平衡器实现?如果是这样,Laravel将包括Fideloper/TrustedProxies包来处理此问题。您需要发布配置并将代理设置为*,因为负载平衡器转发IP可能会有所不同。@RobFonseca是的,我刚刚发现了这个问题。你说得对,谢谢你提供的关于信任代理的提示。“我用它,它工作得很好。”沙朗提奥不知道你的意思。Laravel已经捆绑了TrustedProxy。这就是上面代码所指的
class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array
     */
    protected $proxies = '*';

    /**
     * The headers that should be used to detect proxies.
     *
     * @var int
     */
    protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
}