PHP 401状态returns -1

PHP 401 status returns -1

我正尝试在我的 AngularJS 应用程序中 return 401 响应状态。但是在我看到的控制台中,它 returns -1

我在php中使用的内容:

header("HTTP/1.1 401 Unauthorized");
http_response_code(401);

同样在 codeigniter 中:

$this->output->set_header('HTTP/1.1 401 Unauthorized');
$this->output->set_status_header(401, "my status text");

在 200、205、206 等状态代码中工作正常

有什么想法吗?

您正在从 XMLHttpRequest 发出跨源请求。

在简单的情况下,这意味着在浏览器将数据提供给 JavaScript 之前,服务器必须向 JavaScript 授予权限。

这不是一个简单的案例。您正在提出一个需要 preflight authorisation 的复杂请求。

在发出您想发出的 POST 请求之前,浏览器正在发出 OPTIONS 请求以请求许可。

服务器正在用 401 响应响应 OPTIONS 请求。错误消息明确告诉您:

Response for preflight has invalid HTTP status code 401

然后浏览器完全拒绝发出 POST 请求。

因此 POST 请求的状态为 -1。

您需要以 200 状态(以及适当的 CORS 权限 headers)响应 OPTIONS 请求。然后浏览器将发出一个 POST 请求(如果你愿意,你可以用 401 拒绝)。