У меня есть следующая проблема: я пытаюсь уловить ответ HTTP 500 с сервера, но перехват не получает ответ 500. Это порождается IMG SRC вызова несанкционированном URL (технически сервер должен быть возвращающей 4xx, но она возвращает 5xx -> свой 3-й сервер партииПочему мой запрос об ошибке HTTP не вызывается при вызове img ng-src?
Update 2:. Мой перехват с отказом HTTP называется, если я делаю прямой $ http.get, но он не вызывается, если http get неявно вызывается img ng-src или img-src. Забавная часть - это мой перехват httptimeout, но ответный перехват ответа никогда не вызывается. Как это решить?
Обновление 1: Я добавил скриншот ошибки 500, которая была получена моим браузером через веб-инспектора, но не была промежуточной pted. Посмотрите на конец.
кодперехватчик:
.factory('timeoutHttpIntercept', function ($rootScope, $q) {
//console.log("*** HTTP INTERCEPTOR CALLED ***");
return {
'request': function (config) {
config.timeout = 15000;
//console.log("*** HTTP INTERCEPTOR CALLED ***");
return config;
}
};
})
.factory ('httpAuthIntercept', function ($rootScope, $q)
{
return {
requestError: function (response) {
console.log ("**** REJECT REQUEST: "+JSON.stringify(response));
return $q.reject(response);
},
responseError: function (response) {
console.log ("**** REJECT RESPONSE: "+JSON.stringify(response));
return $q.reject(response);
},
response: function (response)
{
console.log("*******RESPONSE with status: "+response.status+"****************");
if (response.status == 500)
{
console.log ("**** RESPONSE: "+JSON.stringify(response));
}
return (response);
}
};
})
Далее следуют, в .config:
$httpProvider.interceptors.push('timeoutHttpIntercept');
$httpProvider.interceptors.push('httpAuthIntercept');
Теперь в моем шаблоне я звоню следующий код:
<img ng-src="{{LoginData.url}}/cgi-bin/zms?mode=jpeg&monitor={{monitorId}}&maxfps=3&buffer=1000&auth=1234&rand={{rand}}" width="100%" />
выше срабатывает ответ 500. Я вижу журналы сервер генерации этого, а также:
Starting capture on eth0 interface
2015-05-11 05:12:44 xx.xx.xx.xx 192.168.1.13 > GET <server.com> /cgi-bin/zms?mode=jpeg&monitor=1&maxfps=3&buffer=1000&auth=1234&rand=116426 HTTP/1.1 -
2015-05-11 05:12:44 192.168.1.13 xx.xx.xx.xx < - - - HTTP/1.1 500 Internal Server Error
Но по какой-то причине, авторизация перехватывать не улавливать это 500. Если удалить 500 проверки в Идент перехвате, я могу видеть его захват успешных ответов с 200 ОК.
Что я делаю неправильно?
500 скриншот Ответ принимается -> Веб-инспектор Safari:
Благодарности
Вы должны сделать 500 проверок статуса в 'responseError', а не в' response' – harishr
entre, моя проблема - responseError никогда не вызывается, когда сервер возвращает 500 & фактически, и не вызван обработчик ответа. – user1361529
затем попробуйте 'requestError', кажется, что ваш запрос не доходит до сервера, или ваш перехватчик не зарегистрирован. – harishr