在 PHP Linux Azure Web App 中,$_SERVER['REQUEST_METHOD'] 始终设置为 GET,即使 POST、PATCH、DELETE 等请求是通过 Postman 发出的

时间:2021-06-15 07:31:51

标签: php azure http azure-web-app-service

我在 Linux Azure 应用服务上托管了一个 PHP 应用,该应用具有 RESTful API 组件。

在端点的代码中,我有以下代码用于确定发出的请求类型:

if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) {  ...
}
else if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { ...
}
else if ( $_SERVER['REQUEST_METHOD'] == 'PATCH' ) { ...
}
else if ( $_SERVER['REQUEST_METHOD'] == 'DELETE' ) { ...
else { ...
}

当 PHP 应用程序在本地托管并使用 Postman 测试 API 时,这可以正常工作。但是,当应用托管在 Azure 上时,$_SERVER['REQUEST_METHOD'] 变量始终返回 'GET',无论 Postman 中的实际请求方法设置为什么。

我对它进行了一些调查,发现 Stack Overflow 上的答案说 $_SERVER['REQUEST_METHOD'] 变量在默认情况下始终设置为 'GET'https://stackoverflow.com/a/34984252/14461562

但是,我无法找到有关如何使 $_SERVER['REQUEST_METHOD'] 变量正常工作的更多信息。

有没有人遇到过这个问题或知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

也许您没有重定向规则或使用错误的规则。

添加.htaccess文件with below code,也许对你有用。

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]