3

RESTful Web Services은 클라이언트를 리소스의 표준 표현으로 리디렉션하기 위해 HTTP 303을 사용하는 것이 좋습니다. 그것은 단지 HTTP GET의 맥락에서 주제를 논의합니다.다른 HTTP 메소드에서 HTTP 303을 사용할 수 있습니까?

다른 HTTP 메소드에도 적용됩니까? 클라이언트가 HTTP PUT 또는 DELETE을 비표준 URI로 시도하면 HTTP 303을 반환하는 것이 허용 될 수 있습니까? 가장 좋은 방법은 무엇이며 그 이유는 무엇입니까?

답변

4

이 상태 코드는 일반적으로 모든 HTTP 메소드에 적용됩니다.이것은 주로 POST 액션의 출력이 사용자 에이전트를 선택된 리소스로 리디렉션하는 데 사용됩니다. 그렇게하면 원본과 관계없이 별도로 식별, 책갈피 지정 및 캐시 할 수있는 형태로 POST 응답에 해당하는 정보가 제공되므로 의뢰.

소스 : http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-21#section-7.4.4

+0

추가적인 증거 : http://trac.tools.ietf.org/wg/httpbis/trac/ticket/310 - IETF는 'HTTP 303'에 대한 응답으로 'HTTP GET'에 대한 참조를 명시 적으로 제거했습니다. 참고 자료 : http://blogs.msdn.com/b/ieinternals/archive/2011/08/19/understanding-the-impact-of-redirect-response-status-codes-on-http-methods-like-head -get-post-and-delete.aspx – Gili

2

방금 ​​흥미로운 부분을 발견했습니다. 페이지 378에 따라 섹션 302 ("Found") :

이 상태 코드는 대부분의 리디렉션 관련 혼동의 궁극적 인 원인입니다. 그것은 307 ("Temporary Redirect")와 같이 처리되어야합니다. 실제로 HTTP 1.0에서는 이라는 이름이 "Moved Temporarily"였습니다. 불행히도 실제로 대부분의 클라이언트는 303 ("기타보기")처럼 302를 처리합니다. 차이점은 클라이언트가 이 PUT, POST 또는 DELETE 요청에 대한 응답으로 302를 얻었을 때 클라이언트가해야하는 것에 달려 있습니다. 세부 사항에 관심이 있으시면 아래의 307 항목을 참조하십시오.

이 모호성을 해결하기 위해 HTTP 1.1에서이 응답 코드의 이름이 "Found"인 으로 변경되었으며 응답 코드 307이 생성되었습니다. 즉

, HTTP (302)는 HTTP (303)로 분할되었고, 307 다음 페이지 (380)는 섹션 307 ("Temporary Redirect") : 유일한 것은 요청하는 GET 요청에 대한

는 서버 전송입니다 이 상태 코드는 303과 동일합니다 ("기타 참조"). 307 이 GET에 대한 좋은 응답 인 전형적인 경우는 서버가 클라이언트를 미러 사이트로 보내려고 할 때입니다. 그러나 POST를 들어, 서버가 요청에 대한 응답으로 일부 조치를 취할 것으로 예상된다 요청을, PUT 및 DELETE,이 상태 코드는 POST에 대한 응답으로 303

303 큰 차이가 , PUT 또는 DELETE은 작업이 에 성공했지만 응답 entity-body가이 요청과 함께 전송되지 않음을 의미합니다. 클라이언트 이 응답 entity-body를 원하면 다른 URI에 GET 요청을해야합니다. POST, PUT 또는 DELETE에 대한 응답으로 307은 서버가 작동을 수행하기 위해 을 시도하지 않았 음을 의미합니다. 클라이언트는 전체 요청을 Location 헤더의 URI로 다시 제출해야합니다. , PUT, DELETE 즉

, HTTP POST는 HTTP (303), (307) 법적 있습니다. 위의 단락은 예상되는 동작을 설명합니다.

HTTP 규격이 아닌 책을 인용하고 있습니다. (예상되는 동작에 대해서는 의심의 여지가 없습니다).

+0

그것은이 설계 너무 많은 아니라 그것을 위해, 중화 인민 공화국 패턴으로 많이 응답 코드를 처리 브라우저 만하는 방식에 대한 때문에 와서 동작은 사실상되었다 표준. –

+0

@KeithGaughan, 방금 스펙에 대한 새로운 시각을 제시하는 책에서 답을 찾았습니다. 내 업데이트 답변을 참조하십시오. – Gili

관련 문제