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
,要么限制来源。
您无法在客户端更改它;必须在服务器上更改。
我有一个正在访问测试数据库的 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
,要么限制来源。
您无法在客户端更改它;必须在服务器上更改。