Назад | Перейти на главную страницу

Включение запросов POST для файлов HTML в IIS7

Проблема
По этому поводу было довольно много других вопросов (в частности, ошибка 405 Method Not Allowed), но я еще не нашел решения, которое, похоже, работает.

У меня есть веб-приложение только в html и javascript (без бэкэнда), а javascript использует POST в формах. Я понимаю, что IIS видит html-файлы как статические и разрешает им использовать только команды GET и HEAD, поэтому при публикации формы я получаю сообщение «405 Method Not Allowed ... не может быть отображено, потому что недопустимый метод (HTTP-команда) быть использованным".

Конфигурация
У меня установлен IIS 7 по умолчанию на машине Win 7. По умолчанию ISAPI / CGI / ASP и т. Д. И WebDav отключены / не установлены. Единственный параметр, который я изменил, - это добавление чтения / записи для некоторых функций в разделе «Делегирование функций».

В разделе «Сопоставления обработчиков» на сайте по умолчанию есть OPTIONSVerbHandler, TRACEVerbHandler и StaticFile. Ограничения запроса StaticFile показывают, что все глаголы включены, имеют доступ к чтению, вызывают обработчик, только если запрос сопоставлен с файлом или папкой.

Свойства System.Web.DefaultHttpHandler отображают глаголы GET, HEAD и POST.

Пробовал до сих пор
Если я настроил другое сопоставление обработчиков, дублируя ОПЦИИ, но вместо этого установив для него значение POST, ошибка 405 исчезнет, ​​но вместо этого я получу пустую страницу.

Как предлагается в нижней части этот вопрос, я попытался добавить это в свой web.config, но, похоже, это не помогло:

<add name="HttpPost"/>

(Я также сделал то же самое с графическим интерфейсом конфигурации, а также добавил HttpPostLocalhost.)

Я пробовал изменить сообщение на POST в html (на всякий случай), но это не повлияло.

Я также пробовал явно разрешить глаголы в разделе «Фильтрация запросов», но это тоже не помогло.


У кого-нибудь есть другие идеи? Я предполагаю, что это сработает, если я установлю asp и изменю все расширения файлов, но это кажется ненужным.

Таким образом, похоже, что публикация в html-файлах невозможна в IIS без установки внутреннего языка для интерпретации html-файлов, а не обработчика статических файлов IIS. Если кто знает другое, дайте мне знать! (Чтобы было ясно, у Apache нет этой проблемы.)

Сообщение, на которое ссылается @ JudasIscariot1651, работает, однако оно требует установки ASP и приведет к поломке вашего сайта, если вы используете серверный язык, не являющийся ASP (предположительно, только при публикации на html-страницах - я не смог проверить) . Вам необходимо настроить любой язык, который вы используете для обработки html-файлов вместо статического обработчика файлов.

Если вы не используете серверный язык или используете ASP, вот копия версии ASP (права доступа изменены на пример в сообщении) - сначала установите ASP и ISAPI:

<add name="html" path="*.html" verb="*" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" />

Если вы используете PHP, вам необходимо использовать следующее (отрегулируйте настройки PHP) - предположительно, у вас уже установлены PHP и CGI:

<add name="html" path="*.html" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\PHP\php-cgi.exe" resourceType="Unspecified" requireAccess="None" />

Добавьте модули ISAPI и обработчик обработки сценария для файлов «* .html», сопоставив их, например, с обработчик asp по умолчанию, в вашем файле web.config.

См. Это сообщение в блоге: http://zhongchenzhou.wordpress.com/2011/12/05/iis-7-7-5-allow-post-requests-to-html-files/