Методы HTML5 PUT / DELETE не работают в Chrome? - PullRequest
26 голосов
/ 31 июля 2010

Я пытаюсь выяснить, почему методы put / delete на сайте с поддержкой HTML5 не работают с Chrome. Судя по тому, что я искал, звучит так, будто какое-то время он работал с Chrome, поэтому с учетом сказанного я просто ищу несколько указателей, чтобы сузить мою проблему. Возможно, я неправильно реализую форму, возможно, мой доктайп неправильный, кто знает. Любая помощь приветствуется:)

Итак, код выглядит так:

<!DOCTYPE html> 
<html> 

 <head> 
        <title> 
            some_resource
        </title> 
    </head> 
    <body> 
  <div class="content"> 
  <form method="put" action="/some_resource"> 
   <div> 
    <input id="title" name="title" placeholder="The Resource Title" type="text" value="" autofocus /> 
   </div> 
   <div> 
    <textarea id="body" name="body" placeholder="The Resource Body" required></textarea> 
   </div> 
   <div> 
    <input id="submit" name="submit" type="submit" value="Submit" /> 
   </div> 
   <!-- Resource Settings --> 
   <ul> 
    <li> 
     <input id="listed" name="listed" type="checkbox" value="y" /> 
    </li> 
    <li> 
     <input id="template" name="template" type="text" value="resource.html" /> 
    </li> 
   </ul> 
  </form> 
  </div> 
    </body> 
</html>

Просто базовый тест для формы. Теперь я попробовал его на последней версии Ubuntu Firefox (3.6.7), Opera (10.60 Internal) и последней бета-версии Linux Chrome от Google (5.0.375.99 beta). Никто из них, похоже, не отправляет правильный метод put на сервер, когда я отправляю форму. Теперь, я полагаю (не из какого-либо конкретного исследования), что Firefox еще не поддержал это, и что, как и многие другие HTML5, он запланирован на следующую версию FF. Опера, о которой я не знаю, но я часто слышу о ней, идущей в ногу с Chrome. Так что ... да, я немного запутался.

При отправке формы они переходят по ссылке: http://localhost:8080/some_resource?title=t&body=b&submit=Submit&template=resource.html. Обратите внимание, что, как и ожидалось, POST работает просто отлично.

Теперь у кого-нибудь есть указатели, чтобы заставить работать метод put? Вполне возможно, что бета-версия для Linux просто не была обновлена ​​до версии Windows (, что я предполагаю, это то, о чем говорили люди, когда я увидел PUT, работающий на Chrome ), но я ' Я очень надеюсь, что это проблема с моей реализацией.

Должны ли серверы поддерживать PUT / DELETE? (Я использую AppEngine Dev Server в настоящее время). Я не знаю .. надеюсь, у кого-то есть идеи :)

Спасибо за любые ответы, Lee

Примечание: Другие функции HTML5, которые я тестировал до сих пор, работают. Например, в этой форме вы можете увидеть автофокус и необходимые атрибуты. Они работают так, как задумано в Chrome.

Edit1: Просто чтобы прояснить, я понимаю, что поддержка для них отрывочна. Поскольку я ответил на ответ ранее, меня не волнует текущая поддержка в других браузерах. В настоящее время Chrome - это то, чем я хочу работать, и я ожидаю, что Firefox будет работать в следующем выпуске (я не знаю, я просто слышу, как они много толкают HTML5), и я понятия не имею об Opera.

Все это просто для тестирования и изучения нового замечательного мира HTML5 (Web Workers, localStorage и т. Д.) И CSS3. Я забочусь только о современных браузерах, которые соответствуют технологии передовых технологий:)

Ответы [ 2 ]

24 голосов
/ 29 октября 2010

PUT и DELETE больше не поддерживаются для тега <form>.См. HTML5 отличия от HTML4 (19 октября 2010 г.)

3 голосов
/ 31 июля 2010

В качестве монолитного стандарта «HTML5» не существует.

Некоторые из них такие же, как HTML4. Некоторые из них ратифицируют технически нестандартные функции, которые каждый браузер реализует и каждый использует годами. Некоторые из его новых расширений, с которыми в основном согласны производители браузеров, находятся на разных стадиях реализации. Как, например, autofocus.

Но затем некоторые из них являются точечно реализованными вещами, которые, вероятно, изменятся до того, как будут стандартизированы, и некоторые из его случайных бонусных функций, которые некоторые случайные люди из WHATWG сочли бы полезными, но которые не проявляют никаких признаков поддержки со стороны браузера. авторы.

Существует меньше этой последней категории, чем было раньше (ранние черновики WHATWG были почти столь же полны архитектурной астрономии, как XHTML 2.0), но все еще есть некоторые, и в настоящее время, расширенные типы представления формы (PUT / DELETE). методы и некоторые не-HTTP действия) находятся в этой категории. В настоящее время каждый браузер игнорирует method="put", вместо этого возвращается значение по умолчанию get.

Возможно, однажды браузеры это реализуют. Или, может быть, это будет исключено из спецификации. HTML5 еще далек от завершения. Пока просто используйте POST, как и все остальные. Это не совсем чистое RESTfulness, но тогда это не дает вам ничего особенного.

<input ... autofocus /> 

Используйте синтаксисы HTML или XHTML, но не смешивайте их. autofocus="autofocus" для XHTML5 или для HTML5 потеряйте самозакрывающийся /.

<input id="submit" name="submit" type="submit" value="Submit" /> 

Лучше избегать именования кнопок, чтобы избежать столкновений с методом form.submit(). Вам не нужно name для кнопки отправки, если только вам не нужно проверять нажатие одной конкретной кнопки. (И вам не нужно добавлять id s ко всем вашим полям либо. Если вам не нужны id для <label for или таргетинга сценариев, вы можете их пропустить.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...