我在 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']
变量正常工作的更多信息。
有没有人遇到过这个问题或知道如何解决这个问题?
答案 0 :(得分:0)
也许您没有重定向规则或使用错误的规则。
添加.htaccess
文件with below code,也许对你有用。
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]