2017-12-19 20 views
1

Laravel (5.5)은 whoop 페이지 대신 json 형식으로 예외를 분명히 반환합니다. 이 성가신 동작을 비활성화하고 웁스 또는 기본 PHP 예외 형식을 어디에서받을 수 있습니까?JSON 예외를 방지하는 방법

+0

존재하지 않는 페이지를 방문해보십시오 (간단한 브라우저 GET 요청). JSON에서 예외가 발생합니까? .env에'APP_DEBUG = true'가 있으면 정상적인 웁스를 얻을 수 있습니다. JSON 헤더를 보낼 때 JSON이 반환된다고 생각합니다. – devk

+0

@devk 예, 질문에 언급 된대로 json을 얻습니다. 현재는'APP_DEBUG = true'입니다. json 헤더에 대해 정기적 인 예외를 받아야합니다. 이것이 문제입니다. – PHPst

답변

1

JSON 응답을 기대하는 요청을하면 JSON 응답이 제공됩니다. 이 표준 동작을 원하지 않는 경우

X-Requested-With: XMLHttpRequest 

또는

X-PJAX: true 

또는

Accept: */json or *+json 

, 당신은 app/Exceptions/Handler.php에서 귀하의 예외 핸들러를 덮어 쓸 수 있습니다 : 다음 헤더는 JSON 응답을 트리거합니다. (이 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php에서 직접 복사하고, 항상 요청 헤더를 무시하고 으악를 반환)이에 render 기능을 변경

/** 
* Render an exception into an HTTP response. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Exception $exception 
* @return \Illuminate\Http\Response 
*/ 
public function render($request, Exception $exception) 
{ 
    if (method_exists($e, 'render') && $response = $e->render($request)) { 
     return Router::toResponse($request, $response); 
    } elseif ($e instanceof Responsable) { 
     return $e->toResponse($request); 
    } 

    $e = $this->prepareException($e); 

    if ($e instanceof HttpResponseException) { 
     return $e->getResponse(); 
    } elseif ($e instanceof AuthenticationException) { 
     return $this->unauthenticated($request, $e); 
    } elseif ($e instanceof ValidationException) { 
     return $this->convertValidationExceptionToResponse($e, $request); 
    } 

    return $this->prepareResponse($request, $e); 
} 

을 또는 당신이 반환하고자하는 컨텐츠의 종류를 결정하기 위해 여기에 자신의 논리를 추가 다른 헤더가 주어 졌을 때.