这个问题很容易理解,我正在编写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,则相同的代码可以正常工作。
答案 0 :(得分:0)
试试这个......
我认为您使用的REST测试工具将使用CORS来确定是否允许它发出请求。
问题在于,对于任何非安全的HTTP请求(PUT
,POST
,DELETE
等),CORS将首先执行所谓的“飞行前”请求。 / p>
这个飞行前请求实际上是一个带有多个CORS标头的OPTIONS
请求,并且基本上询问服务器,“我可以执行下一个http方法吗?”。
您的飞行前失败,因为OPTIONS
请求将导致400 Bad request
。因此,“真实”请求将永远不会被执行。