Мелкозернистая поддержка браузера HTTP-глаголов - PullRequest
10 голосов
/ 10 июля 2010

Есть ли какие-либо данные о том, как браузеры на самом деле поддерживают остальные HTTP-глаголы (особенно PUT, DELETE).Этот вопрос в основном мотивирован тем фактом, что многие источники (такие как ответ stackoverflow ) сообщают, что большинство браузеров не поддерживают PUT и DELETE, но не говорят, какие.

Rails решает эту проблему, используя патч на клиенте и обращая патч на сервере, но мне интересно, например, каким браузерам такой взлом не понадобится.

Ответы [ 2 ]

5 голосов
/ 15 июля 2010

Если сомневаетесь, спросите Анну :

http://annevankesteren.nl/2007/10/http-method-support

Этому пару лет, но он дает чистую оценку здоровьяPUT и DELETE, но он также пробует различные варианты более неясных глаголов, таких как TRACE и PROPFIND:

Ван Кестерен тестировал Firefox 3, Opera 9.5 и Internet Explorer 7, смесь предварительных выпусков и выпусков.GET и POST работали, как и ожидалось, и все поддерживали стандартный набор методов http из RFC 2616. Есть некоторые проблемы с регистром, поэтому вы должны всегда придерживаться заглавных букв;TRACE и OPTIONS являются крайними случаями с проблемами, обнаруженными в Firefox и Opera, соответственно.CONNECT, TRACE и SEARCH проблематичны для IE.Имейте в виду, что это было написано в 2007 г.в элементе HTML <form> :

Атрибут method элемента FORM указывает метод HTTP, используемый для отправки формы агенту обработки.Этот атрибут может принимать два значения:

  • get: с помощью метода HTTP «get» набор данных формы добавляется к URI, указанному атрибутом действия (с вопросительным знаком ("?") в качестве разделителя) и этот новый URI отправляется агенту обработки.

  • post: при использовании метода HTTP "post" набор данных формы включается в телоформа и отправляется агенту обработки.

Это причина, по которой браузеры поддерживают только GET и POST в HTML;поскольку в стандарте так сказано.

Текущая (январь 2014 г.) спецификация XMLHttpRequest , с другой стороны, прямо заявляет, что методы запроса должны быть разрешены с некоторыми исключениями (CONNECT, TRACE или TRACK),и что методы RFC2616 должны быть прописными:

\ 6.Если метод является регистронезависимым совпадением для CONNECT, DELETE, GET, HEAD, OPTIONS, POST, PUT, TRACE или TRACK, вычтите 0x20 из каждого байта в диапазоне от 0x61 (ASCII a) до 0x7A (ASCII z).

Если он не соответствует ни одному из вышеперечисленных, он пропускается буквально, в том числе в последнем запросе.

РЕДАКТИРОВАТЬ Другой источник, который пришел к более или менее одинаковому выводу: XMLHttpRequest поддерживает PUT и DELETE: http://jshirley.vox.com/library/post/xmlhttprequest-and-rest.html (предупреждение, неработающая ссылка на май 2014 г.).

РЕДАКТИРОВАТЬ Вопрос был задан ранее Конечно, но двухлетние ответы остаются в силе.

РЕДАКТИРОВАТЬ Краткое резюме страницы Анны ван Кестерен из2007, и добавил раздел на HTML против XMLHttpRequest

0 голосов
/ 10 июля 2010

См. Страницу PutDeleteSupport в Atom Wiki.Вы можете быть заинтересованы в просмотре других страниц Atom Wiki, связанных с HTTP.

...