我剛剛爲我的最新應用程序之一構建了一個RESTful API。我還構建了一個簡單的管理界面腳手架類,它將枚舉資源並構建簡單的表單和表格以編輯,創建,刪除等。爲什麼現代瀏覽器不支持PUT和DELETE表單方法?
爲了更新和刪除資源,該類使用PUT和DELETE方法輸出表單,漂亮簡單:
<form action="/posts/xxxxxxx" method="DELETE">
<input type="submit" value="Delete" />
</form>
和
<form action="/posts/xxxxxxx" method="PUT">
<input type="text" name="username" value="nikcub" />
<input type="text" name="fullname" value="Nik Cubrilovic" />
<input type="text" name="email" value="[email protected]" />
<input type="submit" value="Update" />
</form>
很簡單。如果檢測到Javascript,那麼它會攔截表單並使用XMLHTTPRequest來提交回來。 Javascript支持其他HTTP方法,但爲什麼現代瀏覽器不支持PUT和DELETE方法?它最終發送一個GET。
我更喜歡當應用程序正常回退到使用相同方法的標準HTML時,而不必使用隱藏字段和類中的邏輯,或者更糟糕的是,將方法放在URI中並且允許GET工作。
我想不出任何瀏覽器爲什麼不支持其他HTTP方法,因爲開發人員只是通過黑客GET或使用POST來解決它。
我搜索了一個答案,並能夠找到它指定爲the XHTML 2.0 spec的一部分。沒有提及它in the HTML5 spec。
「HTML5兼容」瀏覽器不支持它的任何原因嗎?我可以在哪裏發佈請求來打開此備份並在瀏覽器中實現?
確定有關@JoostBaaij我沒有嘗試自己,但MDN隻字不提它https://developer.mozilla.org/en-US/docs/Web/HTML/Element /表格 – 2013-10-22 16:00:14
@JoostBaaij只需雙重檢查。提交此表格http://jsbin.com/IWoWiRi/1/然後在這裏檢查請求http://requestb.in/ol62w4ol?inspect Chrome30,FF24,IE10'method =「PUT」'all顯示爲'GET '所以我很抱歉,但你錯了。 – 2013-10-22 16:08:35
如果沒有,您仍然可以在端口80上打開telnet連接,並使用客戶端腳本啓動命令。 – user2284570 2013-10-22 20:04:30