javascript - AngularJS 和基本 HTTP 身份验证

标签 javascript json angularjs basic-authentication ngresource

我有一个正在访问测试数据库的 Angular 应用程序。这以前有效,但周末我不再被允许访问。我没有对 Angular 代码进行任何更改。问题就在这里。

为了访问测试数据库,我必须传入用户名和密码,因为该数据库使用基本 HTTP 身份验证。我的资源最终看起来像这样。

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 对象。我查看配置 header 部分并注意到这是 url...

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

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

这里是我的 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";
}

我的问题是,这有什么问题以及如何修复它?

最佳答案

请求的资源上不存在“Access-Control-Allow-Origin” header 。如果您说自上次触摸以来您没有更改前端代码,那么这只能意味着服务器上的某些内容发生了变化...根据您提供的错误,这似乎是一个非常明显的情况,有人删除了服务器上的 Access-Control-Allow-Origin服务器,或限制来源。

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

关于javascript - AngularJS 和基本 HTTP 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31009128/

相关文章:

javascript - 当第一个函数完成 W/O 回调参数时执行第二个函数

javascript - angularjs 路由器和 jquerys 的 url 片段问题

javascript - Isotope.js 过滤 html 表格

javascript - 通过其 src 属性获取框架

php - 我需要研究什么才能将我的 mysql 数据库转换为 JSON 或 XML 以在我的 android 应用程序中解析?

objective-c - 解析 JSON 错误

java - 使用java进行语义json数组比较

angularjs - 克隆 ng-boilerplate 后启动项目

javascript - AngularJS:选择不绑定(bind)到模型

javascript - 导入 es6 模块的最佳方法是什么?