¿Qué está mal con este código de autenticación HTTP-Get Basic?

Estoy usando node.js restify as backend para ejecutar un servidor de API REST y angularjs como front-end para llamar a HTTP GET. El servidor REST utiliza la autenticación básica HTTP. El nombre de usuario es foo y la contraseña es bar .

He probado que el código de back-end funciona utilizando un cliente de Restify. Aquí está el código de cliente de trabajo;

 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); }); 

Tengo problemas para que funcione mi código http-get de angularjs. Aquí está el código relevante;

 .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 }); } 

No puedo entender qué está mal con el código angularjs. Estoy usando restify permissionParser. ¿Hay algún requisito de encabezado adicional para que la autenticación básica HTTP funcione con Restify permissionParser?

El mensaje de error en el navegador se ve así:

 { code: "NotAuthorized", message: "" } 

En el depurador de chrome, esto es lo que veo;

 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 

Estoy usando este módulo angular base64. https://github.com/ninjatronic/angular-base64

EDIT: descubrí que no hay nada con el código angular. El problema radica en el servidor de Restify. El servidor de Restify es compatible con el servidor web estático y cuando se habilitó la autenticación básica de http, este servidor web estático dejó de funcionar.

Dentro del controlador, puede pasar el encabezado de autenticación de esta manera:

 var url = '127.0.0.1/alert?list=alertList'; var auth = $base64.encode('foo:bar'); var headers = {"Authorization": "Basic " + auth}; $http.get(url, {headers: headers}).then(function (response) tableData = response.data; //handle data });