[http] HTTP 리디렉션 코드의 차이점

다양한 HTTP 3XX 리디렉션 코드의 차이점은 명확하지 않습니다. 예, 사양을 읽었지만 표준과 실제 사례 사이에 약간의 차이가있는 것 같습니다.

301리디렉션 코드는 충분히 명확한 보인다 자원이 영구적으로 다른 URI로 이동 한이 방법을, 미래의 요청 URI 것을 사용해야합니다.

그리고 307리디렉션 코드도 분명해 보입니다. 리디렉션이 일시적이고 향후 요청은 여전히 ​​원래 URI를 사용해야 함을 의미합니다.

그러나 302와 의 차이점이 무엇인지 303또는 왜 그들과 실제로 다른지 알 수 없습니다 301. 그것은 그가 보인다 302원래 의도 된 임시 (같은 리디렉션 307), 그러나 실제로, 대부분의 브라우저가처럼 취급 303. 그러나 a 303와 a 의 차이점은 무엇 301입니까? 되어 301리디렉션이 뜻 영구적 인?



답변

  • 301 : 영구 리디렉션 이 자원에 대한 후속 요청을하는 클라이언트는 새 URI를 사용해야합니다. 클라이언트는 POST / PUT / DELETE 요청에 대해 리디렉션을 자동으로 수행 해서는 안됩니다 .
  • 302 : 정의되지 않은 이유로 리디렉션합니다. 이 자원에 대한 후속 요청을하는 클라이언트 는 새 URI를 사용 하지 않아야 합니다. 클라이언트는 POST / PUT / DELETE 요청에 대해 리디렉션을 자동으로 수행 해서는 안됩니다 .
  • 303 : 정의되지 않은 이유로 리디렉션합니다. 일반적으로 ‘작업이 완료되었습니다. 다른 곳에서 계속하십시오.’ 이 자원에 대한 후속 요청을하는 클라이언트 는 새 URI를 사용 하지 않아야 합니다. 클라이언트 POST / PUT / DELETE 요청의 리디렉션을 따라야하지만 후속 요청에는 GET을 사용해야 합니다.
  • 307 : 임시 리디렉션 나중에 리소스가이 위치로 돌아올 수 있습니다. 이 자원에 대한 후속 요청을하는 클라이언트는 이전 URI를 사용해야합니다. 클라이언트는 POST / PUT / DELETE 요청에 대해 리디렉션을 자동으로 수행 해서는 안됩니다 .

당신이 선택할 수 있다면 개인적으로 302를 피하는 것이 좋습니다. 많은 클라이언트는 302가 발생할 때 사양을 따르지 않습니다. 임시 리디렉션의 경우 비 GET 요청에서 원하는 동작 유형에 따라 303 또는 307을 사용해야합니다. POST / PUT / DELETE에서 대체 동작이 필요하지 않은 경우 307-303을 선호하십시오.


답변

303과 307의 차이점은 다음과 같습니다.

303 : 다른 것을보십시오. 요청이 올바르게 수신되었지만 리디렉션 URL에서 GET을 사용하여 결과를 검색해야합니다.

307 : 임시 리디렉션 전체 요청은 새 URL로 리디렉션되어야합니다. 모든 게시물 데이터를 다시 게시해야합니다.

참고이 302 (307)의 동작을하도록하지만, 대부분의 브라우저는 (303)의 동작 (둘 다 다시 존재하지 않았다)로 구현되었습니다. 따라서이 두 가지 새로운 코드가 302를 대체하기 위해 도입되었습니다.

301과 303의 차이점 :

301 : 문서가 이동되었습니다. 향후 요청에는 새 URL을 사용해야합니다. 이 URL은 더 이상 사용되지 않습니다.

참고 :이 코드에주의하십시오. 브라우저와 프록시는 실제로 공격적인 캐싱을 적용하는 경향이 있으므로 301로 응답하면 누군가가 해당 URL을 다시 방문하는 데 시간이 오래 걸릴 수 있습니다.

303 : 요청이 올바르게 수신되었습니다. 모든 PUT 요청이 처리됩니다. 결과 문서는 리디렉션 URL에서 검색 할 수 있습니다. 향후 요청은 여전히 ​​원래 URL로 이동해야합니다.


답변