PHP 401状态返回-1

时间:2016-09-19 07:27:30

标签: php angularjs codeigniter http-status-code-401 http-response-codes

我正在尝试在401应用中返回AngularJS响应状态。但是在我看到的控制台中,它返回 -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");

enter image description here

它在状态代码中工作正常,如:200,205,206等。

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

在一个简单的例子中,这意味着服务器必须在浏览器将数据提供给JavaScript之前授予JavaScript权限。

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

在发出要发出的POST请求之前,浏览器正在发出请求权限的OPTIONS请求。

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

  

预检的响应包含无效的HTTP状态代码401

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

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

您需要以200状态(以及相应的CORS权限标头)响应OPTIONS请求。然后浏览器将发出POST请求(如果您愿意,可以使用401拒绝)。