[http] HTTP / 1.1 302는 정확히 무엇을 의미합니까?

내가 읽은 일부 기사는 점프 (한 URI에서 다른 URI로)를 의미한다고 말했지만 실제로 점프가 전혀없는 경우에도 “302”를 감지했습니다!



답변

302 리디렉션은 페이지가 일시적으로 이동되었음을 의미하고 301은 페이지가 영구적으로 이동되었음을 의미합니다.

301은 SEO 값에 적합하지만 302는 클라이언트에게 원래 URL의 값을 잊도록 지시하기 때문이 아닙니다. 각각은 동일한 콘텐츠를 생성합니다 (검색 엔진은 두 개의 이름을 가진 단일 리소스가 아닌 별개의 중복으로 간주합니다).


답변

이 질문은 오래 전에 RFC 2616이 여전히 남아있는 동안에 제기되었습니다. 이 질문에 대한 일부 답변은 오늘날 더 이상 관련이없는 문서를 기반으로합니다. 작성 당시 IETF HTTP 및 QUIC 워킹 그룹의 공동 의장을 맡고있는 Mark Nottingham 을 인용합니다 .

RFC2616을 사용하지 마십시오 . 하드 드라이브, 북마크에서 삭제하고 인쇄 된 사본을 구울 (또는 책임감있게 재활용)하십시오.

이전 RFC 2616은 함께 HTTP / 1.1 프로토콜을 정의하는 다음 문서로 대체되었습니다.

따라서 HTTP / 1.1 상태 코드에 대한 현재 참조 인 RFC 7231 을 기반으로 답변을 제공하는 것을 목표로합니다 .

302상태 코드

응답 302은 URL 리디렉션을 수행하는 일반적인 방법입니다. 302상태 코드 와 함께 응답에는 LocationURI가 다른 헤더 가 포함되어야 합니다. 이러한 헤더는 사용자 에이전트에서 구문 분석 한 다음 리디렉션을 수행합니다.

리디렉션 예

웹 브라우저는 후속 요청에서 에서 POST로 변경 될 수 있습니다 GET. 이 동작이 바람직하지 않은 경우 307(임시 리디렉션) 상태 코드를 대신 사용할 수 있습니다.

이것은 어떻게 302상태 코드는에 정의되어 7231 RFC :

6.4.3. 302 찾음

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

서버는 Location다른 URI에 대한 URI 참조를 포함하는 응답에 헤더 필드를 생성해야합니다 (SHOULD) . 사용자 에이전트 Location는 자동 리디렉션을 위해 필드 값을 사용할 수 있습니다 . 서버의 응답 페이로드에는 일반적으로 다른 URI에 대한 하이퍼 링크가있는 짧은 하이퍼 텍스트 메모가 포함됩니다.

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

Mozilla의 MDN 웹 문서 에 따르면 일반적인 사용 사례 302는 다음과 같습니다.

웹 페이지는 예상치 못한 이유로 일시적으로 사용할 수 없습니다. 이렇게하면 검색 엔진이 링크를 업데이트하지 않습니다.

리디렉션을위한 기타 상태 코드

RFC 7231 를 정의 재 지정을위한 다음과 같은 상태 코드 :

  • 301 (영구 이동)
  • 302 (녹이다)
  • 307 (임시 리디렉션)

RFC 7238는 리디렉션 다른 상태 코드를 정의하기 위해 만들어졌습니다 :

  • 308 (영구 리디렉션)

자세한 내용은이 답변 을 참조하십시오 .


답변

HTTP 301과 302 리디렉션을 비교하는 간단한 방법은 다음과 같습니다.

http://sample.com/sample “에 대한 책갈피가 있다고 가정 하십시오 . 거기에 가기 위해 브라우저를 사용합니다.

이 시점에서 다른 URL 로의 302 리디렉션은 북마크를 ” http://sample.com/sample ” 로 유지해야 함을 의미합니다 . 이는 도착 URL이 향후 변경 될 수 있기 때문입니다.

다른 URL 로의 301 리디렉션은 영구 리디렉션이므로 북마크가 새 URL을 가리 키도록 변경되어야 함을 의미합니다.


답변

에서 RFC 2616 (하이퍼 텍스트 전송 프로토콜 규격) :

10.3.3 302 찾음

   요청 된 리소스는 일시적으로 다른 URI에 있습니다.
   리디렉션이 가끔 변경 될 수 있으므로 클라이언트는
   향후 요청에 Request-URI를 계속 사용하십시오. 이 응답
   Cache-Control 또는 Expires 헤더로 표시되는 경우에만 캐시 할 수 있습니다.
   들.

   임시 URI는 위치 필드에서 제공해야합니다.
   응답. 요청 방법이 HEAD가 아니면
   응답에 하이퍼 링크가있는 짧은 하이퍼 텍스트 메모를 포함해야합니다 (SHOULD).
   새로운 URI.

출처:

http://www.ietf.org/rfc/rfc2616.txt


답변

에서 위키 백과 :

HTTP 응답 상태 코드 302 Found는 리디렉션을 수행하는 가장 일반적인 방법입니다. 표준에 모순되는 산업 관행의 예입니다.


답변

당으로 HTTP 상태 코드 정의 302는 (일시적으로) 리디렉션을 나타냅니다. “요청 된 리소스가 일시적으로 다른 URI에 있습니다.”


답변

302는 자원 위치 변경- “발견됨”을 나타내는 응답입니다.

이제 리소스가 있어야하는 URL은 응답 ‘Location’헤더에 있어야합니다.

요청하는 클라이언트가 “점프”를 수행해야합니다 (응답 위치 헤더 필드의 리소스 URL에 대한 새 요청을 수행).