programing

응답 상태 코드 설정

nasanasas 2020. 9. 2. 18:46
반응형

응답 상태 코드 설정


이 질문에 이미 답변이 있습니다.

몇 가지 검사를 실행하고 잠재적으로 다양한 상태 코드를 반환 할 수 있어야하는 API 호출이 있습니다. 커스텀 뷰나 아무것도 필요하지 않습니다. 적절한 코드를 반환하기 만하면됩니다. 사용자가 적절한 자격 증명을 전달하지 않은 경우 401 상태를 반환해야합니다. 지원되는 요청 형식을 보내지 않은 경우 400 상태를 반환해야합니다.API이기 때문에 내가 정말로 원하는 것은 응답 상태를 설정하고 요청이 실패한 이유에 대한 간단하고 멍청한 메시지로 종료하는 것입니다 (아마를 사용

exit

). 작업을 완료하기에 충분하지만 제대로 작동하지 못했습니다. PHP

header()

와 Cake를 사용해 보았지만

$this->header()

(모두 컨트롤러에 있음) 종료 메시지가 표시되지만 헤더에

200 OK

상태가 표시됩니다.아래 코드를 사용하여 메시지를 받았지만 헤더가 설정되지 않았습니다. 내가 무엇을 놓치고 있습니까?

  if( !$this->auth_api() ) {
    header( '401 Not Authorized' );
    exit( 'Not authorized' );
  }

PHP <= 5.3

header()

함수에는 상태 코드에 대한 매개 변수가 있습니다. 지정하면 서버에서 처리합니다.

header('HTTP/1.1 401 Unauthorized', true, 401);

PHP> = 5.4

Gajus의 답변 참조 :

https://stackoverflow.com/a/14223222/362536


PHP 5.4부터

http_response_code

를 사용할 수 있습니다 .

http_response_code(404);

이것은 적절한 HTTP 헤더 설정을 처리합니다.PHP <5.4를 실행하는 경우 두 가지 옵션이 있습니다.

  1. 업그레이드.
  2. PHP에서 구현 된 http_response_code함수를 사용하십시오 .

 

헤더를

올바르게 설정하고 있다고 생각하지 않습니다 .

header('HTTP/1.0 401 Unauthorized');

 

Cakes Response Class를

사용하지 않는 이유는 무엇 입니까? 다음과 같이 간단히 응답의 상태 코드를 설정할 수 있습니다.

$this->response->statusCode(200);

그런 다음 JSON에 가장 적합한 오류 메시지가있는 파일을 렌더링합니다.


CakePHP 2.0.1에서 동일한 문제가 발생했습니다.나는 사용해 보았다

header( 'HTTP/1.1 400 BAD REQUEST' );

$this->header( 'HTTP/1.1 400 BAD REQUEST' );

그러나 이들 중 어느 것도 내 문제를 해결하지 못했습니다.나는 결국 그것을 사용하여 해결했습니다.

$this->header( 'HTTP/1.1 400: BAD REQUEST' );

그 후에는 php / CakePHP에서 오류나 경고가 없습니다.* 편집 : 마지막

$this->header

함수 호출

:

에서 400과 오류 설명 텍스트 사이에 콜론 ( )을 넣었습니다 .


이전에 썼지 만 저와 같은 초보자에게는 반환을 포함하는 것을 잊지 마십시오.

$this->response->statusCode(200);
return $this->response;

참고 URL :

https://stackoverflow.com/questions/6163970/set-response-status-code

반응형