Что вызывает ошибку HTTP 405 «неверный метод (HTTP-глагол)» при отправке формы на PHP в IIS?

У меня есть одна форма в приложении PHP (5.2.9-1), которое заставляет IIS (Microsoft-IIS / 6.0) вызывать следующую ошибку при отправке POSTed:

Страница, которую вы ищете, не может отображаться, потому что для попытки доступа использовался недопустимый метод (HTTP-глагол).

Это код статуса HTTP 405. Все остальные формы в приложении работают, поэтому я считаю, что настройка глаголов IIS для страниц PHP верна.

Это клиентский сервер, на который у меня нет доступа для проверки настроек или тестирования кода. Все, что я могу сделать, это отправить файлы замены клиента. Другие клиенты на серверах IIS не имеют такой проблемы.

Форма совершенно проста:

<form method="post" action="index.php"> ... fields ... </form> 

Что может заставить IIS выбрасывать эту ошибку только для одной формы, но работать с другими?

    Мне удалось получить FTP-доступ к серверу клиента и так удалось выявить проблему.

    После того, как форма POSTED, я аутентифицирую пользователя, а затем перенаправляю основную часть приложения.

     Util::redirect('/apps/content'); 

    Ошибка произошла не при отправке формы, а в перенаправлении сразу после нее. По какой-то причине IIS продолжал использовать метод POST для перенаправления, а затем возражал против POST в /apps/content поскольку это каталог.

    Сообщение об ошибке никогда не указывало, что это была следующая страница, которая генерировала ошибку – спасибо Microsoft!

    Решение заключалось в том, чтобы добавить конечную косую черту:

     Util::redirect('/apps/content/'); 

    IIS может затем разрешить перенаправление к документу по умолчанию, поскольку он больше не пытается отправить POST в каталог.

    Я развертываю приложения VB6 IIS на своем удаленном выделенном сервере с 75 папками. Причина, по которой я получал эту ошибку, – это документ по умолчанию, который не был установлен в одной из папок, надзор, поэтому URL-адрес, попавший в эту папку, не знал, какая страница для сервера, и, таким образом, выбросила ошибку, упомянутую в этом потоке.

    Вы случайно попробовали POST vs post? Эта статья поддержки предполагает, что это может вызвать проблемы с IIS: http://support.microsoft.com/?id=828726

    Допустимые глаголы контролируются в web.config (в корне сайта) в <system.web><httpHandlers> и, возможно, <webServices><protocols> . Web.config будет доступен вам, если он существует. Существует также глобальный server.config, который, вероятно, не будет. Если вы можете взглянуть на любой из них, вы можете получить ключ.

    Допустимые глаголы могут различаться по типу содержимого – вы вообще задали заголовки Content-type на своей странице? (т. е. если ваш Content-type был application / json, тогда могут быть разрешены разные глаголы)

    Я не знаю, почему, но это произошло, когда вы отправляете форму внутри страницы самому себе методом POST .

    Поэтому измените method="post" на method="get" или удалите action="anyThings.any" из тэга <form> .

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

    У меня была эта проблема с приложением facebook, которое я разрабатывал для вкладки страницы поклонника. Если кто-то сталкивается с этой проблемой при использовании приложения facebook,

    1-goto https://developers.facebook.com

    2 – выберите приложение, которое вы разрабатываете.

    3 – убедитесь, что вся ссылка на ваше приложение имеет хвост косой черты /

    моя проблема была в https: //developers.facebook.com- > Apps-> MYAPPNAME-> settings-> Page Tab-> URL-адрес закладки защищенной страницы, вкладке страницы. Редактировать URL-адрес, URL-адрес страницы. Надеюсь, это поможет

    Как сам дрюм сказал, что это связано с последующей переадресацией после того, как POST на скрипт действительно преуспел. (Я мог бы добавить это как комментарий к его ответу, но вам нужно 50 репутации, чтобы прокомментировать, и я здесь новый, – Daft rule IMHO)

    НО это также применяется, если вы пытаетесь перенаправить на страницу, а не только каталог – по крайней мере, для меня. Я пытался перенаправить на /thankyou.html. В каких исправлениях используется абсолютный URL-адрес, например http://example.com/thankyou.html

    мне пришлось изменить POST моей формы в GET. Я просто делал демонстрационную запись на html-странице, на тестовом лазурном сайте. прочитайте это для информации: http://support.microsoft.com/kb/942051

    Еще одна возможная причина.

    На моей странице HTML были следующие стартовые теги:

     <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> 

    Это было на странице, использующей слайдер слайков jquery.

    Я удалил теги и заменил их:

     <html> 

    И все работает снова.