다양한 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로 이동해야합니다.