PHP 401状态返回-1
问题描述:
我试图在我的AngularJS
应用程序中返回401
响应状态。但在控制台,我看到,它返回-1PHP 401状态返回-1
我在PHP中使用:
header("HTTP/1.1 401 Unauthorized");
http_response_code(401);
此外,在笨:
$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请求。
服务器响应OPTIONS请求并带有401响应。该错误消息告诉你这明确:
预检响应具有无效的HTTP状态码401
浏览器,然后拒绝作出POST请求的。
因此,POST请求的状态为-1。
您需要以200状态(以及适当的CORS权限标头)响应OPTIONS请求。然后浏览器会发出一个POST请求(如果你愿意,你可以用一个401拒绝)。
(这里的一个教训是,当你在控制台中有四行输出时,你不应该只把注意力集中在* last *之上) – Quentin
Woow!谢谢。你是对的。正如在你的链接中提到的那样:'它在请求中设置自定义标题(例如请求使用一个标题,例如X-PINGOTHER)',当我清理这个标题'$ http.defaults.headers.common.Authorization'时,我能够获得** 401 **回应码。所以我能做什么? –
@vahidnajafi - 正如我所说的,更改服务器端代码,使其始终响应OPTIONS请求的正确(具有适当的CORS标头)。 – Quentin