2015-07-29 5 views
2

Это мой апи с помощью Phalcon:401 ответ не возвращается JSon

$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; 

И это мой запрос с использованием Мифрилового рамки:

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; 

Это апи код, очевидно, просто тест, не окончательный код. Предполагается имитировать истекший токен, где он отвечает на запрос с заголовком 401 и json status=401, поэтому его можно прочитать в JS error.status.

m.request знает, что это ошибка, но error переменная возвращает null.

В инструментах разработчика Google Chrome запрос показывает 401 Unauthorized, но на вкладке Response отображается «Этот запрос не имеет доступных данных ответа».

ответ

0

Вы забыли 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

+0

Этот код был внутри функции, он посылает ответ вне ее. Решение находится здесь: http://stackoverflow.com/questions/31749662/cant-get-401-response-body –

Смежные вопросы