programing

사용자 지정 HTTP 상태 코드를 만들 수 있습니까?

telebox 2023. 5. 22. 20:56
반응형

사용자 지정 HTTP 상태 코드를 만들 수 있습니까?

저는 REST와 WCF 서비스를 가지고 있으며 작업에 따라 맞춤형 상태 코드를 보내고 싶습니다.

예를 들어 일부 유효성 검사에 실패한 경우 HTTP 444를 보내고 인증에 실패한 경우 HTTP 455를 보냅니다.

문제는 SOAP 및 REST 웹 서비스 모두에 대해 어떻게 검증하느냐입니다.

WCF 서비스(SOAP 사용)에서 HTTP 400/500을 보낼 때 클라이언트에 예외가 발생하여 클라이언트에서 오류 코드가 어떻게 작동합니까?

새 사용자 지정 상태 코드를 보내면 클라이언트는 이를 어떻게 처리합니까?

예, 클래스를 존중하는 한 즉, 성공의 경우 2xx, 클라이언트 오류의 경우 4xx 등입니다.따라서 사용자 지정 4XX 오류 코드(할당되지 않은 것이 좋습니다)를 사용자 지정 4XX 오류 코드로 반환할 수 있습니다.

[RFC 2616][1]에서 인용하는 내용:

"HTTP 상태 코드는 확장 가능합니다.HTTP 응용 프로그램이 모든 등록된 상태 코드의 의미를 이해할 필요는 없지만 이러한 이해는 분명히 바람직합니다.그러나 응용 프로그램은 첫 번째 숫자로 표시된 상태 코드의 클래스를 이해하고 인식되지 않는 응답을 해당 클래스의 x00 상태 코드와 동일한 것으로 처리해야 합니다. 단, 인식되지 않는 응답은 캐시되지 않아야 합니다.예를 들어, 인식할 수 없는 상태 코드 431이 클라이언트에 의해 수신되면 자신의 요청에 문제가 있다고 안전하게 가정하고 응답을 400 상태 코드를 수신한 것처럼 처리할 수 있습니다."

수업'

  • 1xx: 정보 - 요청 수신, 프로세스 계속

  • 2xx: 성공 - 작업이 성공적으로 수신, 이해 및 승인되었습니다.

  • 3xx: 리디렉션 - 요청을 완료하려면 추가 조치를 취해야 합니다.

  • 4xx: 클라이언트 오류 - 요청에 잘못된 구문이 포함되어 있거나 요청을 수행할 수 없습니다.

  • 5xx: 서버 오류 - 서버가 겉보기에 유효한 요청 [1]을(를) 수행하지 못했습니다.

https://www.rfc-editor.org/rfc/rfc2616#section-6.1.1

예제에서 수행하려는 작업에 대해 해당 코드가 이미 존재하는 경우에는 HTTP 상태 코드를 만들지 않는 것이 좋습니다.

  • 처리할 수 없는 오류: 상태 422
  • 인증 실패: 상태 403

https://www.rfc-editor.org/rfc/rfc4918#section-11.2 에서:

422 [Unprocessable Entity] 상태 코드는 서버가 요청 엔터티의 내용 유형을 이해하고(따라서 415 [Unsupported Media Type] 상태 코드는 부적절함) 요청 엔터티의 구문이 올바르지만(따라서 400 [Bad Request] 상태 코드는 부적절함) 포함된 명령을 처리할 수 없음을 의미합니다.예를 들어 XML 요청 본문에 올바른 형식(즉, 구문적으로 올바른)의 XML 명령이 포함되어 있지만 의미적으로 오류가 있는 경우 이 오류 상태가 발생할 수 있습니다.

유효성 검사 오류로 인해 "처리할 수 없음"이 발생할 수 있다고 주장할 수 있습니다.

다음은 사용 가능한/사용 불가능한 모든 목록입니다.HTTP법전

https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

예를 들어 다음과 같은 화살표가 있는 항목은 할당되지 않았기 때문에 사용할 수 있습니다.4XX가족.

여기에 이미지 설명 입력

예, 사용자 지정 오류 코드를 추가할 수 있습니다.가능하면 이미 존재하는 코드를 사용하고 새 코드를 선언할 경우 충돌을 방지해야 합니다.

일부 프록시는 알 수 없는 코드를 필터링합니다.저는 5XX를 500에 매핑하고 4XX를 404에 매핑하는 프록시 배후에 있는 사용자들과 문제가 있었습니다.이로 인해 상태 코드 확인이 실패하는 Ajax 호출이 발생했습니다.

일부 응용 프로그램은 600-799 범위의 사용자 지정 응답 코드를 추가합니다.여기에서 KeyNotes의 응답 코드 목록을 확인합니다.

키노트 정의 오류 코드(600-799)

600: CONNECTION ERROR - This indicates a general connection error
601: INCOMPLETE ERROR - This indicates sever sends an incomplete page/object (as indicated by Content-Length header)
602: UNEXPECTED CLOSE ERROR - This indicates socket connection has been closed unexpectedly
603: REFUSED ERROR - This indicates a request to connect to the server is refused
604: TIMEOUT ERROR - This indicates there is no activity in socket connection in 3 minutes
605: REDIRECT ERROR - This indicates an error in redirect HTTP header
606: SSL ERROR - This indicates a general error in SSL
607: HEADER ERROR - This indicates a malformed HTTP header
608: EMPTY RESPONSE ERROR - This indicates server doesn't send any response after a request is sent
609: UNKNOWN HOST ERROR - This indicates socket receives an unknown host error from DNS
610: NO ROUTE TO HOST ERROR - This indicates a no route to host error was received while attempting to open a socket
611: SOCKET ERROR - This indicates a general socket error
612: FRAME LOOP ERROR - This indicates a page has a frame loop (frame A includes Frame B that includes Frame A)
613: REDIRECT LOOP ERROR - This indicates a page has a redirect loop (page A redirects to page B that redirects to page A)
614: CONNECTION RESET ERROR - This indicates socket receive a reset signal from the server
615: SOCKET PROTOCOL ERROR - This indicates an error in socket protocol
616: SOCKET BIND ERROR - This indicates an error in binding the socket
617: CONNECTION ERROR - This indicates a general socket connection error
618: CHUNK ERROR - This indicates an error in chunked encoding
619: SSL TIMEOUT - This indicates a timeout during SSL handshake (2 minutes)
620: SSL END OF INPUT - This indicates an end-of-file is received during SSL handshake
621: SSL HANDSHAKE ERROR - This indicates a general error during SSL handshake
622: SSL CERTIFICATE ERROR - This indicates an error in SSL certificate verification
623: SSL AUTHENTICATION ERROR - This indicates an authentication error during SSL handshake
624: SSL BAD MAC ERROR - This indicates a bad MAC during SSL handshake
625: SSL CIPHER ERROR - This indicates a cipher error during SSL handshake
701: ERROR TEXT FOUND - This code is returned if any error text (such as, "Service Unavailable") are found in the main page (frame HTML contents included). Note that the error text must be defined in advance of the test. Error text means if the text is found, this session should be considered a failure.
702: REQUIRED TEXT NOT FOUND - This code is returned If not all required texts are found in the main page. Note that required text must be defined in advance of the test. Required text means if the text is not found, this session should be considered a failure.
703: HTML BODY EMPTY - This code is returned if the HTML body of the page is empty (only if error text or required text has been defined).

이것이 좋은 관행인지 아닌지는 감히 말할 수 없지만, 적어도 흥미로운 언급입니다.

아니요. 사용자는 usfc 설명서 요구 사항 코드만 사용할 수 있습니다. 자세한 내용은 RFC 1945를 참조하십시오.

언급URL : https://stackoverflow.com/questions/7996569/can-we-create-custom-http-status-codes

반응형