AngularJS和基本HTTP身份验证

时间:2015-06-23 17:07:25

标签: javascript json angularjs http-basic-authentication ngresource

我有一个访问测试数据库的Angular应用程序。这已经奏效了,但在周末我不再允许访问。我没有对Angular代码进行任何更改。这是问题所在。

为了访问测试数据库,我必须传入用户名和密码,因为数据库正在使用Basic HTTP Auth。我的资源最终看起来像这样。

angular.module("CoolApp.misc")

.factory('Ad', ad)

ad.$inject = ['$resource'];

function ad($resource) {
  return $resource('http://username:password@build.com/api/advertisement.json');
}

现在我跑

Ad.get({}, function(resp) {}, function(badresp) {console.log(badresp)})

控制台吐出badresp对象。我查看了我的配置标题部分,并注意到这是网址...

url: "http://username@build.com/api/advertisement.json"

等一下,我将密码设置为url。为什么标题没有提供密码?这就是我在我的控制台中收到No 'Access-Control-Allow-Origin' header is present on the requested resource.的原因吗?

这里是踢我的http配置

angular.module("CoolApp")

.config(config);

config.$inject = ["$httpProvider"];

function config($httpProvider) {
  $httpProvider.defaults.useXDomain = true;
  //$httpProvider.defaults.withCredentials = true;
  delete $httpProvider.defaults.headers.common["X-Requested-With"];
  $httpProvider.defaults.headers.common["Accept"] = "application/json";
  $httpProvider.defaults.headers.common["Content-Type"] = "application/json";
}

我的问题是,这有什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:1)

This gives x = 8 and y = -1 hence, 如果你说你上次触摸它后没有更改前端代码,那么这只能意味着服务器上的某些内容发生了变化......基于你的错误提供,似乎是一个非常明显的例子,有人要么删除服务器上的No 'Access-Control-Allow-Origin' header is present on the requested resource.,要么限制起源。

你不能在客户端上改变它;必须在服务器上更改。