วิธีแก้ปัญหา paginator หน้าอื่นๆ ไม่เป็น https ใน laravel

Save Pongsiri
ideagital
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.

--

--

Save Pongsiri
ideagital

ศิลปินด้านพัฒนาซอฟต์แวร์ มีเป้าหมายคือพัฒนาตัวเองให้ยืดหยุ่นที่สุด ชอบความเรียบง่าย,ดนตรี,กีฬา และแมว