AngularJS 和基本 HTTP 身份验证

AngularJS and Basic HTTP Auth

我有一个正在访问测试数据库的 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 object。我查看我的配置 headers 部分并注意到这是 url...

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

等一下,我设置的密码是url。为什么 header 不向我提供密码?这就是我在控制台中收到 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";
}

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

No 'Access-Control-Allow-Origin' header is present on the requested resource. 如果你说你上次接触后没有改过前端代码,那只能说明服务器上有什么东西变了……根据你的错误已经提供,这似乎是一个非常明显的案例,有人要么删除服务器上的 Access-Control-Allow-Origin,要么限制来源。

您无法在客户端更改它;必须在服务器上更改。