Подтвердить что ты не робот

Почему современные браузеры не поддерживают методы формы PUT и DELETE?

Я только что закончил создание RESTful API для одного из моих последних приложений. Я также создал простой класс леса для интерфейса администратора, который будет перечислять ресурсы и создавать простые формы и таблицы для редактирования, создания, удаления и т.д.

Для обновления и удаления ресурсов класс выводит форму с методами 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 и разрешить ПОЛУЧИТЕ РАБОТУ.

Я не могу думать о каких-либо причинах, по которым браузеры не будут поддерживать другие HTTP-методы, поскольку разработчики все равно работают вокруг него, взломав GET или используя POST.

Я искал ответ и смог найти его в качестве части спецификации XHTML 2.0. В описании HTML5 нет упоминания .

Любая причина для того, что он не поддерживается в браузерах, совместимых с HTML5? Где я могу отправить запрос на открытие этой резервной копии и реализовать ее в браузерах?

4b9b3361

Ответ 1

Некоторые веб-фреймворки (например, Ruby on Rails) обойдутся, включив в форму скрытый параметр _method со значением "фактического" метода, например:

<form action="/posts/xxxxx" method="POST">
    <input type="hidden" name="_method" value="DELETE">
    <input type="submit" value="delete">
</form>

Затем структура переписывает запрос на стороне сервера перед обработкой, чтобы использовать значение параметра _method в качестве метода HTTP.

Не знаю, поможет ли это вам.

Ответ 3

На самом деле я сделал очень небольшое количество исследований и нашел этот ответ на другом форуме Stackexchange.

Я знаю, что это не очень хороший ответ, чтобы опубликовать ссылку, но я не знаю точного ответа. Таким образом, это единственный способ решить ваши сомнения.

https://softwareengineering.stackexchange.com/info/114156/why-there-are-no-put-and-delete-methods-in-html-forms