Apache 2.4 中不允许 PUT 和 DELETE 请求

PUT and DELETE requests not allowed in apache 2.4

我正在尝试使用 PHP 在我的服务器上创建 RESTFul API。 GET 或 POST 请求没有问题,但我无法使 PUT 或 DELETE 请求正常工作。

起初,我尝试不配置 Apache:我得到的只是一个 403 Unauthorized 错误。然后我使用 Limit:

<Limit GET HEAD POST PUT DELETE OPTIONS>
  Require all granted
</Limit>

我收到 405 方法不允许错误。

从这里开始,我尝试了多种配置(AllowMethods,...),但仍然出现 405 错误。 当我激活 Apache 日志的上层时,它表明一切正常,但仍然是 return 405 代码:

[authz_core:debug] [pid 43259] mod_authz_core.c(817): AH01626: authorization result of Require all granted: granted
[authz_core:debug] [pid 43259] mod_authz_core.c(817): AH01626: authorization result of <RequireAny>: granted
[http:trace3] [pid 43259] http_filters.c(1125): Response sent with status 405, headers:
[http:trace5] [pid 43259] http_filters.c(1134):   Date: Thu, 06 May 2021 06:55:24 GMT
[http:trace5] [pid 43259] http_filters.c(1137):   Server: Apache/2.4.41 (Ubuntu)
[http:trace4] [pid 43259] http_filters.c(955):   Allow: GET,POST,OPTIONS,HEAD
[http:trace4] [pid 43259] http_filters.c(955):   Content-Length: 306
[http:trace4] [pid 43259] http_filters.c(955):   Content-Type: text/html; charset=iso-8859-1

我读到有时像 Jira 这样的服务器 Web 应用程序会导致这种情况,但我只安装了 PhpMyAdmin。

如何使用 PUT 或 DELETE 请求?

注意:Apache/2.4.41 (Ubuntu)

已修复。

全局Apache2配置/etc/apache2/mods-enabled/userdir.conf定义如下规则:

<Limit GET POST OPTIONS>
  Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
  Require all denied
</LimitExcept >

我不确定为什么 <Limit> 在 .htaccess 中被部分忽略(激活时错误 405 而不是 403)但是如果没有 <Limit>.