2011-04-25 3 views
3

성공적인 DELETE 요청 후 리디렉션하는 방법내가 HTML 양식은 DELETE 요청을 수행해야

을 (방법 = POST & 숨겨진 X-HTTP-방법-오버라이드 = DELETE), 어떻게 할 다른 페이지로 리디렉션하도록 브라우저에 알리시겠습니까? 303 + 헤더 위치는 괜찮습니까?

현재 브라우저는 빈 응답을 표시하지 않지만 이전 응답을 유지합니다 (204 상태 코드 때문에). 위치 헤더 (여전히 204 상태 코드)를 추가해도 위치는 변경되지 않습니다.

303 + 위치에서 원하는 동작이 있지만 성공적인 삭제 후 유효한 상태 코드 303인지 궁금합니다. 202 (수락) DELETE는 어떻게됩니까?

+0

이는 DELETE 요청이 아닌 POST 요청입니다. –

+0

@JulianReschke API가 실제로 DELETE 요청을하지만 모든 주요 브라우저에서 자바 스크립트없이 DELETE 요청을 수행하는 것은 불가능합니다 (페이지의 여기에는

뿐입니다). 따라서 api는 X-HTTP-Method-Override 폼 param을 사용하여 http 메서드를 재정의합니다. – Mathieu

+0

폼에서 DELETE를 지원하는 브라우저가 없습니다. 그것은 HTML의 일부가 아닙니다. 어쨌든 : POST 요청은 첨부 한 사용자 정의 헤더의 수와 관계없이 POST 요청입니다. –

답변

2

303 위치가 가장 좋습니다. 당신이 일련의 다른 의미 체계를 가지고 POST를 사용하고 있기 때문에,는 "성공적인 DELETE가"또는 무엇을 의미하는지에 대해 걱정하고, (303)는 맞춤형 redirecting POST requests입니다하지 마십시오

10.3.4 (303) 기타

요청에 대한 응답은 다른 URI에서 찾을 수 있으며 해당 자원에 대해 GET 메서드를 사용하여 검색해야합니다. 이 방법은 주로 POST 활성화 스크립트의 출력이 사용자 에이전트를 선택한 자원으로 리디렉션 할 수 있도록하기 위해 존재합니다. 새 URI는 원래 요청한 자원에 대한 대체 참조가 아닙니다. 303 응답은 캐시해서는 안되지만 두 번째 (리디렉션 된) 요청에 대한 응답은 캐시 가능할 수 있습니다.

+0

어쩌면 제가 POST 요청을 사용하고 있다고 말하면 안됩니다. HTML 형식으로 요청을 DELETE 할 수 없기 때문에 여기서 POST를 사용하고 있습니다. (자바 스크립트없이) 다른 클라이언트가 DELETE 요청을 수행 할 것입니다. POST + X-HTTP-method-override = DELETE 요청은 컨트롤러에 의해 DELETE 요청으로 인식됩니다. 어쨌든, 나는 아무에게도 더 나은 해결책이 떠오르지 않는다면 나는 303으로 고수하고 대답으로 응답 할 것이라고 생각한다. :) – Mathieu