400번대 코드는 클라이언트 오류로서 이 요청은 올바르지 않다는 의미입니다.
다음과 같은 종류가 있습니다.
- 400 Bad Request(잘못된 요청) - 요청 자체가 잘못되었을때 사용하는 코드입니다.
- 401 Unauthorized(권한없음) - 인증이 필요한 리소스에 인증 없이 접근할 경우 발생합니다. 이 응답코드를 사용할 때에는 반드시 브라우저에 어느 인증방식을 사용할 것인지 보내야 합니다. 단순히 권한이 없는 경우 이 응답코드 대신 403을 사용해야 합니다.
- 402 Payment Required(결제 필요) - 결제가 필요한 리소스에 결제없이 접근했을 경우 발생합니다. HTTP/1.1에서 정의되었으나 구현하지는 않고, 향후에 사용하기 위해 예약해둔 코드입니다. 현재 표준조차도 존재하지 않습는다.
- 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(요청된 것이 너무 긺) - 요청 본문이 너무 긴 경우 발생합니다. 서버 소프트웨어로 NGINX를 사용하는 경우 기본 설정 그대로 사용하면 큰 첨부파일을 올릴 때 이 오류 코드가 발생하게 됩니다. 구글에서 너무 긴 내용을 찾아볼 때도 표시됩니다.
- 414 URI Too Long(요청된 URL이 너무 긺) - 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(너무 일찍요청) - 서버가 재생될 수 있는 요청을 처리하는 데 위험을 감수하지 않는다는걸 알릴때 사용되는 코드입니다.[RFC8470] 클라이언트가 파이어폭스 58 이후 버전이 아닌이상 제대로 해석하는 않습니다.
- 426 Upgrade Required(업그레이드 필요) - 클라이언트에서 보낸 요청의 프로토콜이 맞지 않아 현재 서버에서 처리할 수 없으나, 클라이언트가 프로토콜을 서버에서 지원하는 다른 프로토콜로 업그레이드 합니다면 처리해 줄 수도 있는 상황에서 쓰는 응답 코드입니다. 주로 서버의 응답에는 Upgrade 헤더와 필요한 프로토콜을 같이 응답합니다. 보통 HTTP/1.1인 클라이언트가 HTTP/2만 지원하는 서버에서 요청할 때 발생합니다.
- 428 Precondition Required(전제 조건 필요) - 서버로 요청을 할려면 요청이 조건부이어야만 할 때 뜨는 코드입니다. 사용자가 PUT 요청을 하여 서버의 값이 수정되는 동안 다른 사용자가 서버의 상태를 수정하여 발생하는 충돌인 업데이트 상실를 막기 위해서 존재하는 코드입니다.
- 429 Too Many Requests(너무 많은 요청) - 일정 시간 동안 너무 많은 요청을 보냈을 때 이를 거부하기 위해 사용합니다.
- 431 Request Header Fields Too Large(요청 헤더 필드가 너무 큼) - 요청한 헤더 값이 너무 커서 서버에서 처리를 하지 않는다는 걸 응답할 때 쓰는 코드입니다. 보통 크기가 큰 쿠키와 캐시가 너무 쌓여져 있는 상태에서 서버에 요청할 때 뜨는 오류입니다. 그리고 사용자 에이전트 변경프로그램으로 UA를 너무 길게 설정했을 때도 발생합니다. 캐시 및 쿠키를 정리하면 대부분 정상적으로 서버에서 응답합니다.
- 451 Unavailable For Legal Reasons(법적인 이유로 차단됨) - 국가 검열 등, 법적인 이유로 차단되었을 경우 사용할 수 있도록 정의된 코드입니다. 서버는 Link 헤더로 차단된 근거가 되는 주소를 보낼 수 있습니다.
반응형
'개발 > Internet' 카테고리의 다른 글
[Internet] 인터넷은 어떻게 동작하는가 (0) | 2020.12.30 |
---|---|
[Http] 서버 오류 코드(500번대) (0) | 2020.12.29 |
댓글