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


120

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


1
여기 wc3.org 문서에서 이에 대한 좋은 정보가있을 수 있습니다 .
Copas

2
세심한주의를 기울이십시오. example.com example.comexample.com 은 논리적으로 구별되며 단일 URL을 통해 액세스하려는 사이트는이를 달성하기 위해 서로 리디렉션 할 수 있습니다. 물론 302 리디렉션은 이에 대한 선택이 좋지 않지만 유사하게 미묘한 변형을 보았을 수도 있습니다.
Shog9

이 사이트를 참조하십시오 ( hostingpill.com/http-302-error )
virusarthak

답변:


74

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

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


58

이 질문은 오래 전에 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 (영구 리디렉션)

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


2
이틀 동안의 내 고통은 당신에게 끝났습니다 ( Location헤더가 나를 도왔습니다). 내가 서비스를 부르고 http있었고 그들은으로 옮겼습니다 https. 내가 응답 한 것은이었습니다 302. Location여기서 헤더를 읽 자마자 http/https차이를 보았습니다 . 감사합니다!
Eugene

이 오류에 대해서도 같은 이유가 있습니다. 내 Javascript가 잘못된 https 위치를 가리 키므로 리디렉션이 실패했습니다. 댓글 감사합니다.
최대

25

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

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

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

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


9

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

10.3.3 302 찾음

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

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

출처:

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


6

에서 위키 백과 :

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



5

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

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

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


5

SEO 측면에서 301과 302는 모두 상황에 따라 좋으며,

하나의 버전 만 반환 될 수 있다면 (즉, 다른 버전이 해당 버전으로 리디렉션 됨) 좋습니다! 이 동작은 중복 콘텐츠를 줄이므로 유용합니다. 후행 슬래시 URL로 리디렉션되는 특정 경우에는 리디렉션이 301인지 302인지에 관계없이 200 응답 코드 (대부분 후행 슬래시 URL)가 포함 된 URL 버전이 검색 결과에 표시 될 수 있습니다.


3

HTTP 코드 302는 리디렉션을위한 것입니다 ( http://en.wikipedia.org/wiki/HTTP_302 참조) .

다른 페이지로 이동하고 다른 페이지를로드하도록 페이지를 읽는 탐색에 지시합니다. 그 사용법은 매우 일반적입니다.


1

RFC 1945 / Hypertext Transfer Protocol-HTTP / 1.0 에 따르면 :

   302 Moved Temporarily

   The requested resource resides temporarily under a different URL.
   Since the redirection may be altered on occasion, the client should
   continue to use the Request-URI for future requests.

   The URL must be given by the Location field in the response. Unless
   it was a HEAD request, the Entity-Body of the response should
   contain a short note with a hyperlink to the new URI(s).

   If the 302 status code is received in response to a request using
   the POST method, the user agent must not automatically redirect the
   request unless it can be confirmed by the user, since this might
   change the conditions under which the request was issued.

       Note: When automatically redirecting a POST request after
       receiving a 302 status code, some existing user agents will
       erroneously change it into a GET request.

0
  • 코드 302는 임시 리디렉션을 나타냅니다 .
  • 301 리디렉션과 구별되는 가장 주목할만한 기능 중 하나는 302 리디렉션의 경우 SEO의 강도가 새 URL로 전송되지 않는다는 것입니다.
  • 이는이 리디렉션이 최종 페이지가 아닌 페이지로 콘텐츠를 리디렉션해야 할 때 사용하도록 설계 되었기 때문입니다. 따라서 리디렉션이 제거되면 원본 페이지는 Google 검색 엔진에서 위치를 잃지 않습니다.

예 : -302 리디렉션이 필요한 경우는 흔하지는 않지만이 옵션은 경우에 따라 매우 유용 할 수 있습니다. 다음은 가장 빈번한 경우입니다.

  • 페이지에 부적절한 콘텐츠가 있음을 알게 된 경우. 문제를 해결하는 동안 사용자를 관심있는 다른 페이지로 리디렉션 할 수 있습니다.
  • 당사 웹 사이트에 대한 공격으로 인해 페이지의 복원이 필요한 경우이 리디렉션을 통해 발생률을 최소화 할 수 있습니다.

리디렉션 (302)은 특정 URL의 방문자에게 페이지가 일시적으로 이동되었음을 알리고 새 위치로 직접 안내하는 코드입니다.

  • 즉, 리디렉션 302는 Google 로봇 또는 기타 검색 엔진이 특정 페이지를로드하도록 요청할 때 활성화됩니다. 이때이 리디렉션 덕분에 서버는 새 URL을 나타내는 자동 응답을 반환합니다.

  • 이러한 방식으로 검색 엔진과 사용자 모두에게 오류와 성가심을 방지하여 원활한 탐색을 보장합니다.

자세한 내용은이 문서를 참조하십시오 .


0

302 상태 코드는 요청 된 리소스가 일시적으로 다른 URI로 이동되었음을 나타내는 HTTP 응답 상태 코드입니다. 위치 또는 현재 리디렉션 지시문이 나중에 변경 될 수 있으므로 302 Found 응답 코드를 수신하는 클라이언트는 향후 요청에 대해 원래 URI를 계속 사용해야합니다.

이 상태 코드가있는 HTTP 응답은 헤더 필드 위치에 URL을 추가로 제공합니다. 이것은 사용자 에이전트 (예 : 웹 브라우저)에게 두 번째 또는 동일하지 않은 경우 위치 필드에 지정된 새 URL로 요청하는 초대입니다. 최종 결과는 새 URL로 리디렉션됩니다.


0

이름 지정에 대해 궁금한 사람이 있으면 사용자가 수신하려는 주요 리소스 (예 : 개인 웹 페이지)를 그 순간에 사용할 수 없기 때문에 아마도 "찾음"이라고 부를 것입니다 (예 : 사용자는 아직 자신의 신원을 증명하지 않았으므로 서버는 사용자가받을 수있는 새 리소스를 찾았 습니다 (가장 일반적인 사용 사례의 로그인 페이지).

또한 숨바꼭질 방식으로 "잃어 버리고 발견하는 것"입니다. 즉, 302 상태에서 잃어버린 자원은 일시적으로 만 손실 되고 영원히 손실되지 않아야합니다 (플레이어가 나쁜 의도를 가지고 있지 않는 한).

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