php - 如何在 IIS 上为 PHP 应用程序启用 DELETE、PUT?

标签 php http iis azure-web-app-service cleardb

尽管 DELETE 请求在本地成功运行,但当我将我的应用程序部署到 MS Azure 时它不起作用。

这是我在尝试删除记录时在控制台中得到的结果:

DELETE http://mywebsite.azurewebsites.net/api/subjects/1 405 (Method Not Allowed)

我的应用在 cleardb 上使用 mySQL

如何解决这样的问题?

编辑

我的应用程序是 PHP 5.5 应用程序,这是我尝试在 web.config 中执行的操作以启用 DELETE 和 PUT,但没有成功:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
        <rules>
        <rule name="Imported Rule 1" stopProcessing="true">
        <match url="^(.*)$" ignoreCase="false" />
        <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>

<validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>
    <security>
      <requestFiltering>
        <verbs applyToWebDAV="false">
          <add verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" allowed="true" />
        </verbs>
      </requestFiltering>
    </security>

         <handlers>
<remove name="PHP55_via_FastCGI" />
  <add name="PHP55_via_FastCGI" path="*.php" verb="GET, PUT, POST, HEAD, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK" modules="FastCgiModule" scriptProcessor="D:\Program Files (x86)\PHP\v5.5\php-cgi.exe" resourceType="Either" requireAccess="Script" />

              <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
              <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
              <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
              <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
              <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
              <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
            </handlers>

    </system.webServer>
</configuration>

最佳答案

我认为默认情况下,PUT 和 DELETE 在 Web Api/IIS 8 中被禁用,这就是您正在使用的样子。关于这个 here 的讨论相当多.

关于php - 如何在 IIS 上为 PHP 应用程序启用 DELETE、PUT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30303041/

相关文章:

用户帖子的 PHP 正则表达式清理

javascript - 从 HTML 创建数组以通过 AJAX 发送

apache - 使用 htaccess 添加 www 和 https 支持

iis - 在 IIS 中需要 SSL 和使用 URL 重写之间的区别

javascript - piwik 无法在 HTTPS 中工作

php - 关于序列的 postgresql nextval 问题

xml - 使用 HTTP 多部分检索大型 XML 文件以进行验证

java.lang.NoClassDefFoundError : sun/misc/BASE64Encoder 错误

.net - 以编程方式停止和启动 IIS。快速安全的方式

c# - 使用 Windows 进程备份 IIS 设置