ngrok некорректно работает для тестирования HTTPs

#php #symfony #docker #facebook-login #ngrok

#laravel #ngrok

Вопрос:

Я скачал ngrok, чтобы я мог протестировать свой сайт на http и https запросы (если кто-то пытается получить конкретный URL-адрес моего сайта, и это будет простой HTTP-запрос, я буду отрицать это),

во-первых, мой локальный хост работает в порту 8080

Я запускаю ngrok, это дает мне следующее:

введите описание изображения здесь

оба на одном и том же порту, я думаю, это проблема, потому что, если я сделаю такую простую конфигурацию маршрута в laravel:

 Route::filter('force.ssl', function()
{
    if( ! Request::secure())
    {
        return 'unsecured';
    }

});
  

и у меня есть этот маршрут:

 Route::get('survey/payment/secured', array('before' => 'force.ssl', function(){
   return 'secured!';
}));
  

и я выполняю следующий запрос:

https://75fdaa96.ngrok.com/survey/payment/secured

он считает, что он незащищен, и возвращает «незащищенный», как я могу это исправить?

Ответ №1:

Request::secure() полагается на $_SERVER['HTTPS'] . Поскольку HTTPS предоставляется прокси-сервером, а не вашим веб-сервером, Laravel не знает, что он обслуживается как HTTPS.

ngrok передает X-Forwarded-Proto заголовок, но Laravel не доверяет ему по умолчанию. Вы можете использовать доверенное промежуточное программное обеспечение прокси, чтобы доверять ему.