728x90

 

http://blog.plura.io/?p=14782

 

HTTP 상태 코드이언트가 서버에 HTTP 요청을 보내고, 서버가 해당 요청을 처리한 결과를 클라이언트에게 반환할 때 사용되는 3자리 숫자로 이루어진 코드입니다. 각 상태 코드는 요청의 성공, 실패 또는 처리 상태를 나타내는 역할을 합니다.

1xx (Informational) : 요청이 받아들여지고 처리 중임을 나타냅니다. (거의 사용 X)
2xx (Success) : 요청이 성공적으로 처리되었음을 나타냅니다.
3xx (Redirection) : 요청을 완료하기 위해 추가 작업이 필요함을 나타냅니다.
4xx (Client Errors) : 클라이언트의 요청에 오류가 있음을 나타냅니다.
5xx (Server Errors) : 서버가 요청을 처리하는 동안 오류가 발생했음을 나타냅니다.

만약 모르는 상태 코드가 나타난다면 클라이언트는 상위 상태코드로 해석해서 처리해줍니다.
예를 들어 299 ??? → 2XX로 해석하여 (Successful)을 의미한다고 생각하면 됩니다.

    1. 2xx (Success) : 성공 (클라이언트의 요청을 성공적으로 처리)
      200 OK: 요청이 성공적으로 처리되었음을 나타냅니다.
      201 Created : 요청에 의해 새로운 리소스가 생성되었음을 나타냅니다. 자원생성, Location 헤더 有 204 No Content: 요청은 성공적으로 처리되었지만, 응답으로 반환할 내용이 없음을 나타냅니다.
      204 No Content ex) 웹 브라우저에서 웹 문서 편집기를 사용할 때 저장을 하게 되면 데이터가 POST를 통해 서버로 전달되었지만 , 응답할 본문을 받을 필요는 없기 때문에 결과 내용은 없이 204 메세지만으로 성공인식이 가능

    2. 3xx (Redirection) : 리다이렉션 (요청을 완료하기 위해 추가 조치를 요청)
      웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면 , Location 위치로 자동 이동합니다.

      301 Moved Permanently : 요청한 리소스의 URI가 영구적으로 새로운 URI로 변경되었음을 나타냅니다. 클라이언트는 새로운 URI를 사용하여 요청을 다시 시도해야 합니다.
      302 Found: 요청한 리소스의 URI가 일시적으로 새로운 URI로 변경되었음을 나타냅니다. 클라이언트는 새로운 URI를 사용하여 요청을 다시 시도해야 합니다. (주로 리다이렉트에 사용)
      303 See Other : 서버가 클라이언트의 요청을 완료하였으며, 리소스가 다른 URI에 있을 때 사용됩니다. 주로 POST 요청의 결과를 리다이렉트할 때 사용됩니다.
      304 Not Modified : 클라이언트가 이전에 이미 요청한 리소스가 변경되지 않았음을 서버가 알고 있을 때 사용됩니다. 클라이언트가 캐시된 버전을 사용하여 리소스를 가져오도록 유도합니다. 이 때, 서버는 실제 리소스의 내용을 응답으로 보내지 않고, ‘ETag’ 또는 ‘Last-Modified’ 헤더 등을 사용하여 클라이언트의 캐시를 업데이트 할 수 있습니다.
      307 TemporaryRedirect : 클라이언트의 POST 요청은 리다이렉트된 URI로 재전송되지만, 메서드는 변경되지 않습니다. 즉, 클라이언트의 POST 요청은 리다이렉트된 URI에서도 POST로 처리됩니다.
      308 Permanent Redirect : 301 Moved Permanently와 비슷하지만, POST 요청에서의 처리 방식이 다릅니다.클라이언트의 POST 요청은 리다이렉트된 URI로 재전송되며, 메서드도 변경됩니다. 즉, 클라이언트의 POST 요청은 리다이렉트된 URI에서는 GET으로 처리됩니다.

      - 영구 리다이렉션(301, 308) :
      특정 리소스의 URI가 영구적으로 이동 ex) /event → /new-event
      리소스의 URI가 영구적으로 이동한 경우, 원래의 URL을 사용하지 않아 검색 엔진 등에서도 변경을 인지합니다. 301 리다이렉트시 요청 메서드가 GET으로 변하고 , 본문이 제거될 수 있습니다. 308의 기능은 301과 동일하지만, 308은 요청 메서드와 본문을 똑같이 유치하고, 처음 POST로 보내면 리다이렉트도 동일합니다.

      일시 리다이렉션(302, 303, 307) : 웹 서버가 클라이언트의 요청을 일시적으로 다른 URI로 리다이렉트하는 것
      검색 엔진 등에서 URL을 변경하면 안됩니다. 302, 303, 307의 기능은 거의 동일하지만, 302는 본문이 제거될 수 있다는 점, 303은 요청메서드가 GET으로 변경되는 점, 307은 요청 메서드와 본문을 유지(요청 메서드를 변경하면 안됨)하는 차이점 등이 있습니다.

      PRG : Post / Redirect / Get
      ex ) POST로 주문 후에 웹 브라우저를 새로고침 하면 새로고침은 다시 요청되나 , 중복으로 주문 될 수 있습니다.  

      PRG는 Post-Redirect-Get의 약자로, 웹 애플리케이션에서 폼 데이터를 안전하게 제출하는 방법 중 하나입니다. 이러한 방식은 사용자 경험을 향상시키고 중복 폼 제출로 인한 문제를 방지하는 데 도움이 됩니다.

      Post (제출) : 사용자가 폼을 작성하고 제출합니다. 이 때, HTTP POST 메서드를 사용하여 데이터를 서버로 보냅니다.
      Redirect (리다이렉트) : 서버는 폼 데이터를 처리한 후, 적절한 결과 페이지로 리다이렉트(이동)합니다. 이때, HTTP 상태 코드 303 See Other 또는 307 Temporary Redirect를 사용하여 리다이렉트합니다.
      Get (얻기) : 리다이렉트된 결과 페이지를 사용자에게 보여줍니다. 이때, HTTP GET 메서드를 사용하여 페이지를 요청합니다.

      PRG 패턴을 사용하면 사용자가 새로 고침 또는 뒤로 가기를 눌렀을 때 중복 제출을 방지할 수 있습니다. 폼 데이터가 POST로 제출되기 때문에 브라우저에서 다시 로드할 경우 폼 데이터를 다시 제출하는 것을 방지합니다. 대신 리다이렉트를 통해 결과 페이지로 이동하여 사용자에게 정상적인 사용자 경험을 제공합니다.

      PRG 패턴은 웹 애플리케이션에서 폼 처리와 리다이렉트를 결합하여 사용자가 의도하지 않은 작업의 반복을 방지하고 사용성을 향상시키는 데에 널리 사용되는 패턴 중 하나입니다.

 

 

📋 기타 리다이렉션 304 Not Modified : 클라이언트가 이전에 이미 요청한 리소스가 변경되지 않았음을 서버가 알고 있을 때 사용합니다. 클라이언트에게 리소스가 수정되지 않았음을 알려주기 때문에 클라이언트는 로컬 PC에 저장된 캐시를 재사용 할 수 있습니다. 304 응답은 응답에 메세지 바디를 포함하면 안됩니다

특수 리다이렉션 : 결과 대신 캐시를 사용

3. 4xx (Client Error) : 클라이언트 오류 ( 오류의 원인이 클라이언트)
400대 오류는 클라이언트의 요청이 이미 잘못되어있기 때문에 똑같은 재시도가 계속 실패 클라이언트의 요청에 잘못된 문법 등으로 서버가 요청을 수행할 수 없는 상태입니다.

400 Bad Request
: 클라이언트의 요청이 잘못되었거나 서버가 요청을 이해할 수 없는 경우를 나타냅니다. 요청 구문, 주고받는 메세지에서의 오류가 발생했을 때이고 클라이언트는 요청 내용을 다시 검토하고 보내야 합니다. (ex . 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때 )

401 Unauthorized : 인증되지 않은 사용자가 보호된 리소스에 접근하려고 시도한 경우를 나타냅니다. 401 오류 발생 시 클라이언트는 응답에 WWW-Authenticate 헤더와 함께 인증 정보를 제공해야 합니다. 

Authentication(인증) : 본인이 누구인지 확인 ( 로그인 )
Authorization(인가) : 권한 부여 ( Admin 권한 처럼 특정 리소스에 접근할 수 있는 권한, 인증이 있어야 인가가 있음)

403 Forbidden : 인증된 사용자라도 해당 리소스에 접근 권한이 없는 경우를 나타냅니다. 접근이 거부됩니다.

404 Not Found : 요청한 리소스를 찾을 수 없음을 나타냅니다. 요청한 URI가 서버에 존재하지 않거나 라우팅되지 않았을 때 발생합니다. 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을때 발생합니다.


4. 5xx (Server Error) : 서버 오류 (서버문제로 오류 발생)

500 Internal Server Error : 서버 내부에서 오류가 발생한 경우(대부분)를 나타냅니다. 서버에 오류가 발생하여 요청을 처리할 수 없는 상태입니다.

503 Service Unavailable : 서버가 현재 요청을 처리할 수 없는 상태이거나 유지보수 중인 경우를 나타냅니다. 잠시 후에 다시 시도하라는 의미를 갖습니다. 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리 할 수 없는 상황입니다.서버에 문제가 있기 때문에 재시도하면 성공할 수도 있습니다 (복구가 되는 상황)

728x90
반응형

'[HTTP]' 카테고리의 다른 글

[HTTP] HTTP 헤더 정보  (0) 2023.07.30
[HTTP] HTTP 헤더  (0) 2023.07.27
[HTTP] HTTP 메서드의 속성  (0) 2023.07.15
[HTTP] Resource & HTTP 메서드  (0) 2023.07.07
[HTTP] URI와 웹 브라우저 요청 흐름 (URL, HTTP)  (0) 2023.06.28

+ Recent posts