2009-12-06 6 views
27

HTML 보고서 또는 Ajax 중 하나에서 브라우저에서 POST/GET 이외의 작업을 수행하는 방법에 대한 최종적인 (?) 대답은 무엇입니까? 어떤 브라우저가 무엇을 허용하는지 (특히 아약스 측).브라우저에서 HTTP PUT 수행

가 PUT과 같은 적절한 동사를 사용하는 것이 좋은 편안하고 스타일의 백 엔드를 구축, HEAD는 옵션이 등 ... 레일에 숨겨진 양식 필드는이 (IIRC?)이 시뮬레이션하는 데 사용됩니다 방법이라고 백 엔드에서 동사에 대한 적절한 컨트롤러로 디스패치합니다. 지금 (2009 년 말) 필요합니까? 규칙은 무엇입니까?

답변

32

대부분의 브라우저는 HTML 양식의 제한 사항이므로 GET 및 POST 외에 다른 방법을 지원하지 않는 것 같습니다. 등 방법은 PUT을 시뮬레이션 삭제하려면

Are the PUT, DELETE, HEAD, etc methods available in most web browsers?

, 당신은 의사 방법으로 일반 GET/POST 양식에 숨겨진 입력을 추가 할 수 : 다음 주제에 대한 또 다른 질문입니다 귀하의 응용 프로그램은 귀하의 컨트롤러가 당신이 언급 한 것처럼 진정한 PUT 요청 인 것처럼 그것을 볼 수 있도록 그것을 번역합니다. 나는이 방법을 Google sitebricks (자바에서 - 미안 내가 모든 레일 특정 참조가 필요하지 않지만,이 적어도 당신에게 아이디어를 줄 수도 있음)에서 보았습니다 this code. 나는 이것이 아마도 우리가 붙어있는 방법이라고 생각 HTML 사양 변경 사항 (및 해당 브라우저 포함)

그러나 GET, POST, PUT 및 DELETE는 주요 브라우저에서 AJAX를 지원하므로 사용자가 의존하지 않는 경우 숨겨진 입력이 필요하지 않습니다. HTML 폼에.

+0

니스 - 이것들을 함께 연결하면 미래에 이와 같은 것들을 찾는 사람들에게 구글 주스가 도움이 될 것입니다! –

+0

나는 HTML5에 따라 PUT과 DELETE가 지원된다고 덧붙여 야한다 : http://www.w3.org/TR/html5/forms.html # form-submission-0 (HEAD에 대해서는 확실하지 않음). – mpobrien

+2

AJAX는 처음에 제안한 "터널링"보다 훨씬 뛰어나다 고 생각합니다. HTML5에 대한 좋은 점도 있습니다. 그러나 어떤 브라우저가 현재 폼에서 PUT 및 DELETE를 지원하는지 명확하지 않습니다. –

6

GET 및 POST 이외의 작업을하려면 AJAX를 사용해야하므로 양식을 PUT으로 제출할 수 있도록 jQuery Forms 플러그인을 사용하는 것이 좋습니다.

5

HTTP에는 GET, POST, PUT, UPDATE가 있습니다. 그러나 대부분의 브라우저는 GET 및 POST 만 지원합니다. PUT 및 UPDATE는 추가 매개 변수를 요청하여 시뮬레이션됩니다. 레일에서는 _method = "PUT"또는 _method = "UPDATE"입니다.

3

이 문제의 기본 솔루션은 X-HTTP-Method-Override 헤더를 사용하는 것입니다. 이 용어를 검색하는 경우 사용법에 대한 많은 예제를 찾아야합니다.

1

많은 방화벽이 좀 더 시원한 HTTP 동사를 차단한다고 생각합니다. 따라서 회사 사이트에서 소비되는 일반 대중을 위해 무언가를 만들려고하는 경우 효과가있을 수도 있지만 기본 사항을 고수하고 싶을 것입니다.

+0

좋은 점 - "홀수"헤더에도 동일하게 적용됩니다. –

1

추가 요청을 생성하는 또 다른 방법은 webdav 클라이언트입니다. 파일 시스템 클라이언트는 모든 주요 운영 체제에 존재하며 웹 저작을 위해 지원할 수있는 몇 가지 추가 클라이언트가 있습니다.

예를 들어 Amaya 웹 브라우저를 사용하면 PUT 방법을 사용하여 웹에서 문서를 편집하고 서버에 직접 저장할 수 있습니다. Dreamweaver가 WebDAV를 지원하는 등 다른 브라우저 및 여러 웹 그래픽 편집기에서이 플러그인이 있습니다.

WebDAV는 HTTP 1.1에서 정의 된 메서드 외에도 여러 가지 다른 메서드를 자체적으로 사용할 수 있습니다.

관련 문제