Чтобы получить разрешение PUT и DELETE для IIS 7.5 для API REST fast-CGI на основе PHP 5.4, мне пришлось отключить WebDAV-модуль. В противном случае модуль WebDAV вмешивается в HTTP-запросы, используя PUT или DELETE. Однако, чтобы получить эту работу, было немного запутанно, и я мог пропустить некоторые шаги или сделать это в другом порядке.
Эти строки помещаются как дочерние элементы <system.webServer>
-элемента в web.config в корне приложения.
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
Надеюсь, что это избавит от разочарования. Похоже, что по умолчанию для сервера принимается любой HTTP-глагол, которого нет в списке - см. Настройки в Request filtering -> HTTP Verbs -> Edit feature Settings
. Можно рассмотреть возможность явного добавления VERBS, которые должны быть разрешены. Допустимые глаголы могут быть указаны с добавлением этого фрагмента, также как потомок <system.webServer>
.
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="DELETE" allowed="true" />
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
На клиентском компьютере модуль WebDAV можно удалить отсюда:
Control Panel -> Uninstall Program -> Turn Windows features on or off -> IIS -> World Wide Web Services -> Common HTTP feautre -> WebDAV Publishing
Последняя мера, чтобы заставить его работать, была путем редактирования applicationhost.config
, найденного в C:\Windows\System32\inetsrv\config
. В <system.webServer> -> <handlers>
вы увидите запись php, которая имеет всего verb="GET,HEAD,POST
- измените ее, чтобы добавить нужные вам глаголы, например ::
<add name="PHP54_via_FastCGI" path="*.php" verb="GET,HEAD,PUT,DELETE,POST"/>
|
|
|
append verbs here ----------------------------------------------|