background

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

6 months ago ◦ 736 Views

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

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

กรณีนี้เกิดจาก 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
        ],

        ......
    ];
    ....
}

หวังว่าบันทึกนี้จะช่วยให้เจอทางออกกันนะครับ



#laravel #tutorial

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