วิธีแก้ปัญหา paginator หน้าอื่นๆ ไม่เป็น https ใน laravel
Published in
1 min readJun 8, 2018
กรณีนี้เกิดจาก forceSchema(‘https’) ที่เราตั้งค่าไว้เพื่อให้เปลี่ยนทุกอย่างเป็น https มันไม่ส่งผลกับ url ใน paginator เมื่อมันมีพวก X-FORWARDED อยู่นะสิ
ดังนั้นทางแก้ของเราก็คือสร้าง middleware ขึ้นมาสำหรับตั้งค่าเชื่อถือ Proxy ของเราครับ ตั้งชื่อไฟล์ app/Http/Middleware/HttpsProtocol.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class HttpsProtocol {
public function handle($request, Closure $next)
{
$request->setTrustedProxies([$request->getClientIp()],Request::HEADER_X_FORWARDED_ALL);
return $next($request);
}
}
แล้วก็ไปบอก Kernel.php ให้รู้จักกันซะ ที่ไฟล์ app/Http/Kernel.php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
.....
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\HttpsProtocol::class
],
......
];
....
}
หวังว่าบันทึกนี้จะช่วยให้เจอทางออกกันนะครับ
Originally published at ideagital.com.