JAVA/공부

HTTP 에러 코드

GaeGim 2022. 9. 15. 19:07
반응형
  • 에러코드

 

· 100번대 : Information response

상태 코드가 1로 시작하는 경우, 서버가 요청을 받고 서버에 연결된 클라이언트는 작업을 계속 진행하라는 의미다. HTTP 1.0이래로 지원되지 않는 코드다.

 

100 : Continue

요청자는 요청을 계속해야 한다. 서버는 이 코드를 제공해 요청의 첫 부분을 받았으며, 나머지를 기다리고 있음을 의미한다.

101 : Switching Protocols

요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인 중에 있다.

102 : Processing(WebDAV)

서버가 요청을 수신해 처리하고 있지만 아직 제대로 된 응답을 알려줄 수 없음을 의미한다.

 

 

 

 

· 200번대 : Successful response

이 클래스의 상태 코드는 클라이언트가 요청한 동작을 수신해 그를 이해하고 승낙하여 성공적으로 처리했음을 가리킨다.

 

200 : OK

에러 없이 서버가 요청을 제대로 처리했다는 의미한다. 주로 서버가 요청한 페이지를 제공했음을 의미하고 정보는 요청에 따른 응답으로 반환된다.

201 : Created요청이 성공적으로 처리되었고 그 결과 새로운 리소스가 생성되었습니다. 이 응답은 일반적으로 POST 요청 또는 일부 PUT 요청 이후에 따라온다.

202 : Accepted

요청을 수신하였지만 그에 대한 행동을 수행할 수 없다는 의미다. 이 응답은 요청 처리에 대한 결과를 이후에 HTTP로 비동기 응답을 보내는 것에 명확한 명시를 하지 않았다. 이것은 다른 프로세스에서 처리 또는 서버가 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 만들어졌다.

203 : Non-Authoritative Information

서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공함을 의미한다.

204 : No content

요청에 대해서 보내줄 콘텐츠는 없지만 헤더는 의미있을 경우. 즉 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는다는 의미다. 사용자-에이전트는 리소스가 캐시된 헤더를 새 것으로 업데이트할 수 있다.

205 : Reset Content

서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는다. 요청을 완수한 이후에 사용자 에이전트에게 이 요청을 보낸 문서 보기를 재설정할 것을 요구한다. (예시 : 새 입력을 위한 양식 비우기)

206 : Partial Content

서버가 GET 요청의 일부만 성공적으로 처리했다.207 : Multi-Status여러 소스에서 여러 응답 상태인 멀티 상태 응답은 여러 리소스가 여러 상태 코드인 경우에 해당되는 정보를 전달한다.208 : Already Reportedpropstat( property + status 합성어) 응답 속성으로 동일 컬렉션을 통해서 바인드되는 복수의 내부 멤버를 반복해서 열거하는걸 피하기 위해 사용하는데, DAV 바인딩 멤버는 이미 응답의 앞 부분에 열거되어 있으며 다시 포함되지 않는다는 의미로 응답하는 상태코드. 226 : IM Used (HTTP Delta encording)서버가 GET 요청에 대한 리소스 처리를 다 했고 그에 대한 응답이 하나 혹은 그 이상의 인스턴스 조작이 현재 인스턴스에 적용됨을 의미한다.

 

 

 

  • 300번대 : Redirection message

이 요청을 완료하려면 리다이렉션이 이뤄져야 한다. 단축된 URL 서비스의 경우 접속시 301, 302 상태 코드를 보내고, 헤더의 location에 리다이렉션할 실제 URL을 적어보낸다.

 

300 : Multipie Choice

서버가 요청에 대해 하나 이상의 응답을 선택 가능하다. 사용자 에이전트에 따라 작업을 선택하거나 요청자가 선택할 수 있는 작업 목록을 제공한다.

301 : Moved Permanemtly

클라이언트가 요청한 리소스의 URI가 영구적으로 변경되었음을 의미한다. GET 또는 HEAD 요청에 대한 응답으로 이 응답을 표시하면 요청자에게 새로운  URI가 응답에서 주어질 수 있다.

302 : Found

클라이언트가 요청한 리소스의 URI가 일시적으로 변경되었음을 의미한다. 서버는 현재 다른 위치의 페이지로 요청에 응답하고 있지만, 새롭게 변경된 URI는 나중에 만들어질 수 있으므로 클라이언트는 향후 요청도 원래의 동일한 URI로 해야 한다.

303 : See Other

클라이언트가 요청한 리소스를 다른 URI에서 GET 요청하여 검색할 경우, 서버가 클라이언트로 표시해 직접 보내는 응답이다. HEAD 요청 이외의 모든 요청을 다른 위치로 자동 전달한다.

304 : Not Modified

캐시를 목적으로 사용된다. 클라이언트에게 마지막 요청 이후에 요청한 응답이 수정되지 않았음을 알려주므로써 페이지의 콘첸츠를 표시하지 않고, 표시되지 않으면 If-Modified-Since HTTP 헤더를 표시하여 서버를 구성해야 한다. 클라이언트는 계속해서 응답의 캐시된 버전을 사용할 수 있다.

305 : Use Proxy

이전 버전의 HTTP 기술 사양에서 정의되었으며 요청한 응답은 반드시 프록시를 통해 요청한 페이지만 접속해야 하는 것을 알려준다. 하지만 프록시의 in-band 설정에 대한 보안의 걱정성으로 인해 사라져 가고 있다.

306 : Unused

더 이상 사용되지 않고 현재는 추후 사용을 위해 예약되어 있다.  HTTP 1.1 기술 사양 이전 버전에서 사용되었다.

307 : Temporary Redirect

클라이언트가 요청한 리소스가 다른 URI에 있으며 이전 요청과 동일한 메서드를 사용해 요청해야 할 때 보내는 상태 코드로, 302 상태 코드와 동일한 의미를 가진다. 사용자 에이전트가 반드시 사용된 HTTP 메서드를 변경하지 말아야 하는 점이 다르다. 첫 요청에 GET 메서드가 사용되었으면 그 후의 요청도 GET 메서드를 사용해야 한다.

308 : Permanent Redirect

리소스가 HTTP 응답 헤어드이 Location:에 명시된 영구적으로 다른 URI에 위치함을 의미한다. 301 상태 코드와 동일한 의미를 가지며 사용자 에이전트가 반드시 HTTP 메서드를 변경하지 말아야 하는 점이 다르다. 첫 요청에 GET 메서드가 사용되었으면 그 후의 요청도 GET 메서드를 사용해야 한다.

 

 

 

 

400번부터는 가장 일반적인 웹 페이지 오류라고 할 수 있다.

 

  • 400번대 : Client error responses

요청이 올바르지 않다는 의미다. 여기서부터는 브라우저에 직접 표시된다.

 

400 : Bad Request

요청이 잘못되어 서버가 요청 구문을 인지하지 못 할 때 사용하는 상태 코드.

401 : Unauthorized

인증이 필요한 리소스에 인증 없이 접근할 경우에 사용하는 상태 코드. 이 상태 코드를 사용할 때는 반드시 브라우저에 어떤 인증 방식을 사용할 지 보내야 한다. 단순히 권한이 없는 경우 이 상태 코드 대신 403 상태 코드를 사용해야 한다.

403 : Forbidden

서버가 요청을 거부할 때 사용하는 상태 코드. 관리자가 해당 사용자를 차단했거나 서버에 index.html이 없는 경우나 로그인 여부와는 무관히 권한이 없을 때에 발생한다.

404 : Not Found

찾는 리소스가 없다는 뜻으로, 가장 흔한 오류다.

405 : Method Not Allowed

PUT이나 DELETE 등 서버에서 허용되지 않은 메소드로 요청시 사용하는 코드이다.

406 : Not Acceptable

요청은 정상이나 서버에서 받아들일 수 없는 요청일시 사용하는 코드이다. 보통 웹 방화벽에 걸리는 경우 이 코드가 반환된다.

407 : Proxy Authentication Required

프록시 인증이 필요할 경우 사용하는 코드이다.

408 : Request Timeout

요청 중 시간이 초과되었을때 사용하는 코드이다.

409 : Conflict

사용자의 요청이 서버의 상태와 충돌하여 응답하는 코드이다.

410 : Gone 

404와는 달리 찾는 리소스가 영원히 사라진 경우 사용하는 코드이다.

411 : Length Required

서버에 요청시 Content-Length 값을 지정하지 않아 서버에서 응답을 거부할 때 쓰는 코드이다.

412 : Precondition Failed

사용자가 서버로 조건부 요청(Conditional Requests)을 보낼 때 서버의 전제조건와 사용자의 전제조건이 맞지 않아 서버에서 응답 거부를 할때 쓰는 코드이다.

413 : Payload Too Large

요청 본문이 너무 긴 경우 발생한다. 서버 소프트웨어로 엔진엑스를 사용하는 경우 기본 설정 그대로 사용하면 큰 첨부파일을 올릴 때 이 오류 코드가 발생하게 된다.

414 : URI Too Long

URI가 너무 길 때 발생한다. 흔히 볼 수 있는 사례는 URL이 너무 긴 경우이다.

415 : Unsupported Media Type

사용자가 요청한 미디어타입이 서버에서 지원하지 않는 타입이라서 응답을 거부할 때 쓰는 코드이다.

416 : Requested Range Not Satisfiable

요청 헤더의 Range로 지정한 범위가 잘못되었을 때 발생한다.

417 : Expectation Failed

요청 헤더의 Expect값이 서버에서는 적절하지 못하다는 것을 응답할때 쓰는 코드이다.

418 : I'm a teapot

하이퍼텍스트 커피 포트 제어 프로토콜(HTCPCP)(RFC 2324)에서 사용되는 코드이다.

421 : Misdirected Request

서버로 유도된 요청된 응답을 서버에서 생성할 수 없을때 응답하는 코드로 주로 TLS 인증서가 여러개 설치된 상태에서 꼬였을 경우 뜨는 오류다.

422 : Unprocessable Entity

요청을 잘 받았으나 문법 오류로 인하여 무언가를 응답할 수 없을때 사용되는 코드이다. WebDAV 전용.

423 : Locked

요청한 리소스가 잠겨있을때 뜨는 코드이다. WebDAV 전용.

424 : Failed Dependency

이전의 요청이 실패한 상태에서 지금의 요청도 실패한 경우 뜨는 코드이다. 간단히 말해 요청 연속실패. WebDAV 전용.

425 : Too Early(너무 일찍요청) : 서버가 재생될 수 있는 요청을 처리하는 데 위험을 감수하지 않는다는걸 알릴때 사용되는 코드이다. 클라이언트가 파이어폭스 58 이후 버전이 아닌이상 재대로 해석하지는 않는다.

426 : Upgrade Required

클라이언트에서 보낸 요청의 프로토콜이 맞지 않아 현재 서버에서 처리할 수 없으나, 클라이언트가 프로토콜을 서버에서 지원하는 다른 프로토콜로 업그레이드 한다면 처리해 줄 수도 있는 상황에서 쓰는 응답 코드이다. 주로 서버의 응답에는 Upgrade 헤더와 필요한 프로토콜을 같이 응답한다. 보통 HTTP/1.1인 클라이언트가 HTTP/2만 지원하는 서버에서 요청할 때 뜬다.

428 : Precondition Required

서버로 요청을 할려면 요청이 조건부이어야만 할 때 뜨는 코드이다. 사용자가 PUT 요청을 하여 서버의 값이 수정되는 동안 다른 사용자가 서버의 상태를 수정하여 발생하는 충돌인 업데이트 상실를 막기 위해서 존재하는 코드.

429 : Too Many Requests

일정 시간 동안 너무 많은 요청을 보냈을 때 이를 거부하기 위해 사용한다. 나무위키에서는 페이지 소스(/raw/문서명) 보기를 너무 자주 요청했을 때 임시 차단을 걸기 위해 사용되며 대다수 API에서 요청 제한을 나타내기 위해 사용한다.

431 : Request Header Fields Too Large

요청한 헤더 값이 너무 커서 서버에서 처리를 하지 않는다는 걸 응답할 때 쓰는 코드이다. 보통 크기가 큰 쿠키와 캐시가 너무 쌓여져 있는 상태에서 서버에 요청할 때 뜨는 오류이다. 그리고 사용자 에이전트 변경프로그램으로 UA를 너무 길게 설정했을 때도 나온다. 캐시 및 쿠키를 정리하면 대부분 정상적으로 서버에서 응답한다.

451 : Unavailable For Legal Reasons

국가 검열 등, 법적인 이유로 차단되었을 경우 사용할 수 있도록 정의된 코드이다. 서버는 Link 헤더로 차단된 근거가 되는 주소를 보낼 수 있다.

 

 

 

  • 500번대 : Server error responses
서버가 응답할 수 없다는 의미이며, 요청이 올바른지의 여부는 알 수 없다.
 
 
500 : Internal Server Error
서버에 오류가 발생해 작업을 수행할 수 없을 때 사용된다. 보통 설정이나 퍼미션 문제. 아니면 HTTP 요청을 통해 호출한 문서가 실제 HTML 문서가 아니라 JSP, PHP, 서블릿 등의 프로그램일 경우 그 프로그램이 동작하다 세미콜론을 빼먹는 등의 각종 에러로 비정상 종료를 하는 경우 이 응답코드를 보낸다.
501 : Not Implemented
서버가 요청을 수행하는데 필요한 기능을 지원하지 않는 경우 사용된다. 웬만해서는 볼 수 없다.
502 : Bad Gateway
게이트웨이가 연결된 서버로부터 잘못된 응답을 받았을 때 사용된다.
503 : Service Temporarily Unavailable
서비스를 일시적으로 사용할 수 없을 때 사용된다. 주로 웹서버 등이 과부하로 다운되었을 때 볼 수 있다.
504 : Gateway Timeout
게이트웨이가 연결된 서버로부터 응답을 받을 수 없었을 때 사용된다.
505 : HTTP Version Not Supported
HTTP 버전을 서버가 처리할 수 없다. 브라우저는 서버가 처리 가능한 HTTP 버전을 자동으로 선택하므로, 웬만해서는 볼수 없는 오류이다.
506 : Variant Also Negotiates
서버 내부 구성(값)에 오류가 있어 반환되는 값에 컨텐츠 협상이 순환 참조로 이루어져 있다는걸 알려주는 코드.
507 : Insufficient Storage
서버 내부 구성(값)에 오류가 있어 선택된 가변 리소스는 투명한 콘텐츠 협상에 참여하도록 구성되므로 협상 과정에서 적절한 끝점이 아님을 알려주는 코드. WebDAV 전용.
508 : Loop Detected
서버가 요청을 처리하는 동안 무한 루프를 발견하였을 때 뜨는 응답코드. WebDAV 전용.
510 : Not Extended
서버가 요청을 처리할때 요청에 대한 추가 확장이 필요한경우 뜨는 응답코드.
511 : Network Authentication Required
사용자가 네트워크 엑세스 권한이 필요한 경우 뜨는 응답코드. 보통 네트워크에 엑세스할 때 로그인이 필요한 경우 주로 뜬다.

 

 

 

 

반응형

'JAVA > 공부' 카테고리의 다른 글

서블릿 매핑  (0) 2022.09.15
HttpServlet 클래스  (0) 2022.09.15
JS 비/정규식 유효성 검사 예제  (0) 2022.09.13
자바 스크립트 계산기 만들기  (2) 2022.09.13
절대 경로와 상대 경로  (0) 2022.09.04