Laravel使用HTTP通过HTTP而非HTTPS服务资产

时间:2018-07-05 09:08:43

标签: laravel amazon-web-services https amazon-elastic-beanstalk amazon-elb

在我的新项目中,当我将应用程序部署到https://域时,每个@echo off setLocal EnableDelayedExpansion SET "file=(C:\Users\astre\Desktop\test\fichier.c)" SET /p NouvelVal= Entrez la fréquence que vous souhaitez entre 4Mhz et 24 MHz: SET WordToSearch=#define HSE_VALUE((uint32_t)25000000) SET Replacement=#define HSE_VALUE((uint32_t)%NouvelVal%)    for /f "tokens=* delims= " %%a in %file% do ( set str=%%a set str=!str:%WordToSearch%=%Replacement%! echo !str!>>test2.txt ) type test2.txt>fichier.c del test2.txt pause 和每个{{ asset() }}都通过http提供服务(这会导致“混合内容”问题)。 / p>

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

我尝试确保将{{ route() }}正确设置为https,并且我知道我可以使用secure_assetforceScheme,但是我不必在以前的项目中执行此操作我想知道为什么。

如何查看Laravel在哪里做出协议决定?我想找到问题的根源,而不是一味解决问题。

2 个答案:

答案 0 :(得分:5)

这是一个简单的陷阱。如果您使用的是AWS,则需要更改配置。这非常简单,并且与往常一样,Laravel的文档提供了解决方案。您可以在这里阅读更多内容:

https://laravel.com/docs/5.6/requests#configuring-trusted-proxies

enter image description here

(作为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;
}

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

答案 1 :(得分:0)

我相信您正在寻找secure_asset
这里是一个例子:

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

更新:

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

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    if(env('APP_ENV') == 'production') {
        \URL::forceScheme('https');
    }
}

/**
 * Register any application services.
 *
 * @return void
 */
public function register()
{
    //
}
}