Laravel обслуживает ресурсы через HTTP, а не HTTPS с AWS - PullRequest
0 голосов
/ 05 июля 2018

В моем новом проекте при развертывании приложения в моем домене https: // каждый {{ asset() }} и каждый {{ route() }} обслуживается по протоколу http (что вызывает проблемы со смешанным содержимым).

Я использую AWS с приложением Elastic Beanstalk с балансировкой нагрузки.

Я пытался убедиться, что APP_URL правильно установлен на https, и я понимаю, что могу использовать secure_asset или forceScheme , однако мне не пришлось делать это с моим предыдущий проект, и я хочу понять, почему.

Как я могу увидеть, где Laravel принимает решение о протоколе? Я хочу понять причину проблемы, а не оштукатурить ее.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Это простая ошибка. Если вы используете 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;
}

Теперь все в порядке. Легко пропустить при настройке нового проекта.

0 голосов
/ 05 июля 2018

Я считаю, 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()
{
    //
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...