Browser hacks
+++"There are two noncontroversial uses for overloaded POST. The first is to simulate HTTP's uniform interface for clients like web browsers that don't support PUT or DELETE"
+— RESTful Web Services, Leonard Richardson & Sam Ruby.
+
Browser based PUT, DELETE, etc...
+TODO: Preamble. Note that this is the same strategy as is used in Ruby on Rails.
+For example, given the following form:
+<form action="/news-items/5" method="POST">
+ <input type="hidden" name="_method" value="DELETE">
+</form>
+
+request.method
would return "DELETE"
.
Browser based submission of non-form content
+Browser-based submission of content types other than form are supported by using form fields named _content
and _content_type
:
For example, given the following form:
+<form action="/news-items/5" method="PUT">
+ <input type="hidden" name="_content_type" value="application/json">
+ <input name="_content" value="{'count': 1}">
+</form>
+
+request.content_type
would return "application/json"
, and request.content
would return "{'count': 1}"
URL based accept headers
+URL based format suffixes
+Doesn't HTML5 support PUT and DELETE forms?
+Nope. It was at one point intended to support PUT
and DELETE
forms, but was later dropped from the spec. There remains ongoing discussion about adding support for PUT
and DELETE
, as well as how to support content types other than form-encoded data.