我正在尝试在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");
它在状态代码中工作正常,如:200,205,206等。
有什么想法吗?
答案 0 :(得分:2)
您正在从XMLHttpRequest发出跨源请求。
在一个简单的例子中,这意味着服务器必须在浏览器将数据提供给JavaScript之前授予JavaScript权限。
这不是一个简单的案例。您正在撰写一份需要preflight authorisation的复杂请求。
在发出要发出的POST请求之前,浏览器正在发出请求权限的OPTIONS请求。
服务器使用401响应响应OPTIONS请求。错误消息明确告诉您:
预检的响应包含无效的HTTP状态代码401
然后,浏览器拒绝发出POST请求。
因此POST请求的状态为-1。
您需要以200状态(以及相应的CORS权限标头)响应OPTIONS请求。然后浏览器将发出POST请求(如果您愿意,可以使用401拒绝)。