方法PUT的http_response_code问题

时间:2014-10-21 12:42:36

标签: php rest

这个问题很容易理解,我正在编写API并尝试提供HTTP响应,我正在resttest进行测试。

问题: 当方法是PUT或DELETE尝试返回超过400的HTTP响应代码时,我发现错误。

这是我的代码:

.httacces:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ webroot/index.php [QSA,L]

此处为webroot / index.php:

<?php
session_start();
error_reporting(E_ALL);

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");

http_response_code(400);
?>

请记住,如果方法是GET或POST,或者代码低于400,则相同的代码可以正常工作。

1 个答案:

答案 0 :(得分:0)

试试这个......

我认为您使用的REST测试工具将使用CORS来确定是否允许它发出请求。

问题在于,对于任何非安全的HTTP请求(PUTPOSTDELETE等),CORS将首先执行所谓的“飞行​​前”请求。 / p>

这个飞行前请求实际上是一个带有多个CORS标头的OPTIONS请求,并且基本上询问服务器,“我可以执行下一个http方法吗?”。

您的飞行前失败,因为OPTIONS请求将导致400 Bad request。因此,“真实”请求将永远不会被执行。