Я использую node.js в качестве backend для запуска сервера API REST и angularjs в качестве front-end для вызова HTTP GET. Сервер REST использует базовую аутентификацию HTTP. Имя пользователя: foo
, а пароль - bar
.Что не так с этим кодом HTTP-Get Basic?
Я протестировал, что бэкэнд-код работает с использованием клиента-рестайзера. Вот код рабочего клиента;
var client = restify.createJsonClient({
url: 'http://127.0.0.1'
});
client.basicAuth('foo', 'bar');
client.get('/alert?list=alertList', function(err, req, res, obj) {
console.log(obj);
});
У меня проблемы с получением моего urularjs http-get code для работы. Вот соответствующий код;
.controller('ViewCtrl', ['$scope', '$http', '$base64',
function ($scope, $http, $cookies, $base64) {
var url = '127.0.0.1/alert?list=alertList';
var auth = $base64.encode('foo:bar');
$http.defaults.headers.common['Authorization'] = 'Basic ' + auth;
$http.get(url).then(function (response) {
tableData = response.data;
//handle data
});
}
Не могу понять, что не так с кодом angularjs. Я использую restify authorizationParser. Существуют ли какие-либо дополнительные требования к заголовку, чтобы получить базовую аутентификацию HTTP, работающую с reify authorizationParser?
Сообщение об ошибке в браузере выглядит следующим образом:
{
code: "NotAuthorized",
message: ""
}
В хром-отладчике это то, что я вижу;
Request Method:GET
Status Code:403 Forbidden
Remote Address:127.0.0.1:80
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,zh-TW;q=0.2,ja;q=0.2
Cache-Control:max-age=0
Connection:keep-alive
Host:127.0.0.1
If-Modified-Since:Wed, 23 Dec 2015 02:22:04 GMT
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Я использую этот base64 угловой модуль. https://github.com/ninjatronic/angular-base64
EDIT: Я обнаружил, что с угловым кодом ничего нет. Проблема заключается в обновлении сервера. Восстановительный сервер поддерживает статический веб-сервер, и когда включена HTTP-аутентификация, этот статический веб-сервер перестает работать.
Что сказать, ошибка? –
Я отредактировал вопрос, чтобы показать ошибку. Благодарю. – user781486