HTTP 301과 308 상태 코드의 차이점은 무엇입니까?


138

HTTP 301308상태 코드 의 차이점은 무엇입니까 ?

  • 301 (영구적으로 이동 됨) :이 요청과 향후 모든 요청은 주어진 URI로 전달되어야합니다.

  • 308 (영구 리디렉션) : 요청 및 향후 모든 요청은 다른 URI를 사용하여 반복되어야합니다.

비슷한 것 같습니다.


tools.ietf.org/html/rfc2616tools.ietf.org/html/rfc6585 에 코드 308이 없으므로이 비표준 코드의 발명자에게 질문을해야합니다.
KonstantinL

4
RFC 7538 사양이 있으므로 실제 HTTP 코드입니다
Alexander Drobyshevsky 2017

2
음, tools.ietf.org/html/rfc7538 : 참고 :이 상태 코드는 POST에서 GET으로 요청 방법을 변경할 수 없다는 점을 제외하면 301과 유사합니다.
KonstantinL

4
RFC 2616을 참조로 사용하지 마십시오. RFC 7230-35에 의해 폐기되었습니다.
cassiomolin

답변:


258

개요 301, 302307

RFC 7231 , 의미론 및 HTTP / 1.1 프로토콜의 내용에 대한 현재 기준은 정의 301(영구 이동) 및 302요청 방법이 변경 될 수 있도록 (실측치) 상태 코드 POST로이 GET. 이 사양은 또한 307요청 방법을에서로 변경하는 POST것을 허용하지 않는 (임시 리디렉션) 상태 코드를 정의합니다 GET.

아래에서 자세한 내용을 참조하십시오.

6.4.2. 301 영구 이동

301(이전 영구적으로) 상태 코드는 대상 자원에 새로운 영구 URI가 할당되었으며 향후이 자원에 대한 참조가 동봉 된 URI 중 하나를 사용한다고 나타냅니다. [...]

참고 : 기록적인 이유로 사용자 에이전트 는 후속 요청 POSTGET대해 요청 방법을에서 로 변경할 수 있습니다 . 이 동작이 바람직하지 않은 경우 307(임시 리디렉션) 상태 코드를 대신 사용할 수 있습니다.

6.4.3. 302 찾음

302(실측치) 상태 코드 대상 자원이 일시적으로 다른 URI에있는 것을 나타낸다. 리디렉션이 가끔 변경 될 수 있으므로 클라이언트는 향후 요청에 대해 유효한 요청 URI를 계속 사용해야합니다. [...]

참고 : 기록적인 이유로 사용자 에이전트 는 후속 요청 POSTGET대해 요청 방법을에서 로 변경할 수 있습니다 . 이 동작이 바람직하지 않은 경우 307(임시 리디렉션) 상태 코드를 대신 사용할 수 있습니다.

6.4.7. 307 임시 리디렉션

307(임시 리디렉션) 상태 코드는 해당 URI에 자동으로 재 지정을 수행하는 경우 일시적으로 다른 URI와 사용자 에이전트하에 대상 자원 상주 요청 방법을 변경해서는 안된다는 나타낸다. 리디렉션은 시간이 지남에 따라 변경 될 수 있으므로 클라이언트는 향후 요청에 대해 원래의 유효 요청 URI를 계속 사용해야합니다. [...]

참고 : 이 상태 코드는 302요청 방법을에서 POST로 변경할 수 없다는 점을 제외하면 (찾음) 과 비슷 합니다 GET. 이 사양은 301(영구적으로 이동 됨)에 해당하는 항목을 정의하지 않습니다 ( 그러나 RFC 7238308 은이 목적을위한 상태 코드 (영구 리디렉션)를 정의합니다 ).

에 대한 필요성 308

RFC 7238는 정의하기 위해 만들어졌습니다 308유사하다 (영구 리디렉션) 상태 코드 301(영구 이동)하지만 요청 방법을 변경 할 수 없습니다 POST로를 GET.

308상태 코드는 현재에 의해 정의된다 RFC 7538 (폐기 된 RFC 7238을 ).

3. 308 영구 리디렉션

308(영구 리디렉션) 상태 코드는 대상 자원에 새로운 영구 URI가 할당되었으며 향후이 자원에 대한 참조가 동봉 된 URI 중 하나를 사용한다고 나타냅니다. 링크 편집 기능이있는 클라이언트는 가능한 경우 서버에서 보낸 하나 이상의 새 참조에 대한 유효 요청 URI에 대한 참조를 자동으로 다시 연결해야합니다. [...]

참고 : 이 상태 코드는 301요청 방법을에서 POST로 변경하는 것을 허용하지 않는다는 점을 제외하면 (영구 이동 됨) 과 유사 합니다 GET.

Se 우리는 다음이 있습니다 :

                                                             +-----------+-----------+
                                                             | Permanent | Temporary |
+------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET        | 301       | 302       |
+------------------------------------------------------------+-----------+-----------+
| Doesn't allow changing the request method from POST to GET | 308       | 307       |
+------------------------------------------------------------+-----------+-----------+

가장 적합한 상태 코드 선택

Michael Kropat 는 각 상황에 가장 적합한 상태 코드를 결정하는 데 도움이 되는 일련의 의사 결정 차트 를 작성했습니다. 2xx3xx상태 코드 는 다음을 참조하십시오 .

2xx 또는 3xx 상태 코드 선택


3
당신은에 조금 더 설명을 줄 수있는, 문제는 301과 308 사이의 destinction에 대해 특별히 것을 감안할 때 : "요청 방법을 변경 할 수 없습니다 POSTGET" ? 게시 된 양식을 처리 할 수 ​​없지만 새로운 새 양식을 서버에 저장 한 다음 다음 요청에 게시 할 수 있다는 의미입니까?
R. Schreurs

1
이 초안 사양 ( tools.ietf.org/id/draft-hunt-http-rest-redirect-00.html )은 ReSTful 서비스가 GET에 대해서도 308을 사용해야한다고 제안합니다. "HTTP 리디렉션 코드 301-306은 서비스 제공자가 클라이언트가 실제로 사용자 에이전트임을 인식하지 않는 한 사용해서는 안됩니다." 그러나 이것은 초안 일뿐입니다. 수락 여부 /시기를 잘 모르겠습니다.
Bruce Adams

1
이 게시물 인 the-definitive-guide-to-get-vs-postPOST(안전한) 요청이 to로 변경 되도록 허용하는 이유 GET를 설명합니다. -비밀번호 포함) 요청은 보안 문제가 될 수 있으며 변경해도 안전한지 알지 못하는 경우 일반적으로 피해야 합니다. 요즘은 301, 302보다 307, 308을 사용하는 것이 일반적으로 지원되고 선호되는 것 같습니다.하지만 확인해야합니다.
SherylHohman

1
니모닉 308은 횡 방향 무한대와 같으므로 영구적으로 리디렉션되며 요청 방법도 변경하지 않습니다. 또한 영구적이고 고정 된 요청 유형입니다. 그런 다음 307입니다 1임시 위치에 영구적 인 /의 킵 요청 방법 (GET / 포스트)하지만, 리디렉션 - 다음 단계 : 7 - "좌회전"또는 임시 우회, 7 같은 외모 K 찾고 유사한이므로, "계속"을 요청 방법.
SherylHohman

Resume Incomplete 를 언급하는 것을 잊었습니다 .
Knu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.