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

Выполнение HTTP PUT из браузера

Я хотел бы знать, что означает окончательный (?) ответ на то, как делать что-то другое, кроме POST/GET, из браузера - либо HTML-формы, либо Ajax, поскольку я слышу смешанные отчеты о том, какие браузеры позволяют (в частности, сторона ajax).

При создании обратного конца в стиле RESTful полезно использовать правильные глаголы, такие как PUT, HEAD, OPTIONS и т.д.... в rails, для имитации этого поля используется скрытое поле формы, называемое методом (IIRC?), и на назад конец отправки в соответствующий контроллер для глагола. Это сейчас (в конце 2009 года)? какие конвенции?

4b9b3361

Ответ 1

Похоже, что большинство браузеров не поддерживают другие методы, кроме GET и POST, поскольку это ограничение HTML-форм. Вот еще один вопрос по теме:

Доступны ли методы PUT, DELETE, HEAD и т.д. в большинстве веб-браузеров?

Чтобы имитировать методы PUT, DELETE и т.д., вы можете добавить скрытый ввод в обычную форму GET/POST с помощью псевдо-метода и заставить ваше приложение перевести его так, чтобы ваши контроллеры видели его так, как если бы он был настоящий запрос PUT, как вы упомянули. Я видел этот метод, используемый в google sitebricks (в java - извините, у меня нет ссылки на рельсы, но это может по крайней мере дать вам идею) в этот код. Я думаю, что это, вероятно, метод, за которым мы застряли, пока что-то в спецификации HTML не изменится (и браузеры с ним)

Однако GET, POST, PUT и DELETE поддерживаются в AJAX основными браузерами, поэтому нет необходимости в скрытом вводе, если вы не полагаетесь на HTML-форму.

Ответ 2

Вы должны использовать AJAX, чтобы делать что-либо, кроме GET и POST, я бы рекомендовал плагин jQuery Forms, чтобы вы могли отправить форму как PUT.

Ответ 3

HTTP имеет 4 GET, POST, PUT, UPDATE. Но большинство браузеров поддерживают только GET и POST. PUT и UPDATE моделируются путем отправки дополнительных параметров в запрос. В рельсах это _method = "PUT" или _method = "UPDATE".

Ответ 4

Я считаю, что предпочтительным решением этой проблемы является использование заголовка X-HTTP-Method-Override. Если вы ищете этот термин, вы должны найти множество примеров того, как его использовать.

Ответ 5

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

Ответ 6

Помимо генерируемых запросов ajax, другим способом получения этих дополнительных методов является webdav клиент. клиенты файловой системы существуют для всех основных операционных систем, и есть несколько дополнительных клиентов, которые могут поддерживать его для веб-разработки.

Например, веб-браузер Amaya позволяет вам редактировать документы в Интернете и сохранять их непосредственно на сервере, используя PUT. Для этого есть плагины для других браузеров и несколько веб-графических редакторов, таких как Dreamweaver, также поддерживающие WebDAV.

WebDAV также поддерживает ряд других методов, помимо методов, определенных в HTTP1.1 для собственного использования.