繁体   English   中英

401响应未返回json

[英]401 response doesn't return json

这是我使用phalcon的api:

$response = new Response();
$response->setStatusCode( 401, 'Unauthorized' );
$response->setContentType( 'application/json', 'UTF-8' );
$response->setJsonContent( ['status' => 401] );
$response->setHeader('Access-Control-Allow-Origin',  '*');
$response->setHeader('Access-Control-Allow-Headers', 'X-Requested-With, Authorization');
$response->setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
return $response;

这是我使用Mithril框架的要求:

options = {method: 'GET', url: "http://.../flights/recent"};
var oldConfig = options.config || function() {};

options.config = function(xhr) {
    xhr.setRequestHeader("Authorization", "Bearer " + AuthComponent.token());
    oldConfig(xhr);
};

var deferred = m.deferred();

m.request(options).then(deferred.resolve, function(error) {
    if(error.status === 401) {
        AuthComponent.originalRoute = m.route();
        m.route('/login');
    }
});

return deferred.promise;

那个api代码显然只是测试,而不是最终代码。 它应该模拟一个过期的令牌,在该令牌中它使用401标头和json status=401响应请求,以便可以在JS error.status读取它。

m.request知道这是一个错误,但是error变量返回null

在Google Chrome开发者工具上,请求显示401未经授权,但“响应”标签显示“此请求没有可用的响应数据”。

您忘记了send()响应。

$response = new \Phalcon\Http\Response();
$response->setStatusCode( 401, 'Unauthorized' );
$response->setContentType( 'application/json', 'UTF-8' );
$response->setJsonContent( ['status' => 401] );
$response->send();

您应该检查本教程: https : //docs.phalconphp.com/pt/latest/reference/tutorial-rest.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM