我正在使用PHP制作REST API,我知道可以通过$_SERVER['REQUEST_METHOD']
获取请求方法。
但是,在浏览器中如何触发PUT / DELETE请求?
我无法想象更改表单标记的方法属性以指定除GET或POST之外的方法将在所有浏览器上起作用...此外,HTML标准不予承认。
谢谢。
我正在使用PHP制作REST API,我知道可以通过$_SERVER['REQUEST_METHOD']
获取请求方法。
但是,在浏览器中如何触发PUT / DELETE请求?
我无法想象更改表单标记的方法属性以指定除GET或POST之外的方法将在所有浏览器上起作用...此外,HTML标准不予承认。
谢谢。
<input type="hidden" name="_method" value="put" />
因此,在这种情况下,您需要使用一组简单的if-else语句来确定_method
变量是否被覆盖(当然是有效的)。我会使用类似以下的代码:
$method = 'get';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST['_method']
&& ($_POST['_method'] == 'PUT' || $_POST['_method'] == 'DELETE')) {
$method = strtolower($_POST['_method']);
} else {
$method = 'post';
}
}
fopen
可以处理 HTTP 请求,但我认为它只能处理 GET 请求。如果你使用 fsockopen
,你需要自己处理 HTTP 协议,生成头文件等。
你可以使用 HTTPRequest(在 php_http
扩展中)或 PEAR。
更新:
如果你真的是想要向你的 PHP 脚本发送 PUT/DELETE 请求,而不是从它们那里接收请求,那么这个问题可能会有所帮助:
method="PUT"
,我认为浏览器可能会将请求视为POST,并且表单字段将被“multipart/form-data”编码,因此PUT的正文将是“field1=value&field1=value&...”。我相信您可以通过JavaScript XMLHTTPRequest
使用任意数据来使用PUT/DELETE,尽管我没有尝试过。 - Tim Sylvester