Laravel5에서 HTTP 응답의 헤더 추가를 After 미들웨어를 작성하여 웹 사이트 전체에 적응한다.

HTTP 응답 헤더 추가하기 After 미들웨어를 만들어 웹 페이지 전체에 적응합니다.


  • 보안 대책 등 사이트 전체에 반영하고 싶기 때문에 미들웨어로 한다.

  • 미들웨어 작성


    % php artisan make:middleware AddResponseHeaders
    Middleware created successfully.
    
  • app/Http/Middleware/AddResponseHeaders.php 편집
  • 
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            $response = $next($request);
    
            $response->header('TEST-HEADER',            'hoge');
            $response->header('Cache-control',          'no-store');
            $response->header('Pragma',                 'no-cache');
            $response->header('X-Frame-Options',        'Deny');
            $response->header('X-Content-Type-Options', 'nosniff');
            $response->header('X-XSS-Protection',       '1; mode=block');
    
            return $response;
        }
    

    미들웨어를 웹 페이지에 적용


  • 미들웨어 그룹의 "web"배열에 추가한다.
  • routes/web.php 에 기술하고 있는 루트의 HTTP 리스폰스 전부에 반영.
  • app/Http/Kernel.php 편집
  • 
        /**
         * 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\AddResponseHeaders::class,// <- 追記する
            ],
    
  • 미들웨어가 웹이 되어 있는 루트 모두에 반영된다.
  • % php artisan route:list
    +--------+----------+----------+------+---------+--------------+
    | Domain | Method   | URI      | Name | Action  | Middleware   |
    +--------+----------+----------+------+---------+--------------+
    |        | GET|HEAD | /        |      | Closure | web          |
    |        | GET|HEAD | api/user |      | Closure | api,auth:api |
    |        | GET|HEAD | test     |      | Closure | web          |
    +--------+----------+----------+------+---------+--------------+
    
    

    HTTP 헤더 확인


    % php artisan serve
    Laravel development server started: <http://127.0.0.1:8000>
    
  • 브라우저에서 http://127.0.0.1:8000/에 액세스.
  • 개발자 도구의 Network에서 127.0.0.1을 선택하여 Headers 탭의 Response Headers에 항목이 추가되었는지 확인합니다.

  • 좋은 웹페이지 즐겨찾기