Request () небезопасен в Laravel с балансировщиком нагрузки и TrustedProxies

Почему request()->isSecure() возвращает false при посещении HTTPS-адреса? Я использую Laravel Forge, и у меня есть балансировщик нагрузки. Регистрируя запрос, я получаю следующие данные:

request()->url(),          // "http://xx.xx"
request()->isSecure(),     // false
request()->getClientIps(), // XX.XX.XX.XX 

В TrustProxies (который добавлен в массив $middleware в Http/Kernel.php):

protected $proxies = [
    'XX.XX.XX.XX', // exactly the same as in the logged data above
];

В моем методе AppServiceProviderboot():

if (env('APP_ENV') == 'production') {
    \URL::forceScheme('https');
}

Редактировать:

Я также использую Cloudflare, и я также добавил все прокси Cloudflare в $proxies. Проверь логи, в запросе вижу такие заголовки:

X-Forwarded-Proto: http
Cf-Visitor:        {"scheme":"https"}
Referer:           https://xx.xx/someurl

Вероятно, что запрос, который видит Laravel, находится между вашим балансировщиком нагрузки и вашим веб-сервером, который не должен использовать https.

Devon 08.09.2018 00:30

Вы должны иметь возможность пересылать заголовки с помощью балансировщика нагрузки, но это выходит за рамки SO.

Devon 08.09.2018 00:32

Если ваш балансировщик нагрузки обменивается данными с веб-серверами через HTTP вместо HTTPS, вы увидите такое поведение. В зависимости от балансировщика нагрузки может быть X-Forwarded-Proto, который вы можете использовать для обнаружения HTTPS.

ceejayoz 08.09.2018 00:36

В моем журнале я вижу X-Forwarded-Proto: http. Что я не упомянул в своем первоначальном вопросе, так это то, что я также использую Cloudflare. Я обновил вопрос, добавив более подробную информацию.

Fredrik 08.09.2018 00:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
4
385
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пока вы используете Cloudflare, вы должны использовать «Режим полного шифрования SSL / TLS».

Другие вопросы по теме