我有一个托管在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应用程序托管在本地,并且API使用Postman进行测试时,这一切都很好。然而,当应用程序托管在Azure上时,无论Postman中的实际请求方法设置为什么,$_SERVER['REQUEST_METHOD']
变量始终返回'GET'
。
我对它进行了一些研究,发现了一个Stack Overflow的答案,它说默认情况下$_SERVER['REQUEST_METHOD']
变量总是设置为'GET'
:https://stackoverflow.com/a/34984252/14461562.
但是,我一直找不到关于如何使$_SERVER['REQUEST_METHOD']
变量正常工作的更多信息。
有人有这个问题的经验或知道如何解决它吗?
也许您没有重定向规则或使用了错误的规则。
添加以下代码的.htaccess
文件,可能对您有用。
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}s([^.]+).php [NC]
RewriteRule ^ %1 [R,L]