Javascript 添加文档访问被拒绝

Javascript 添加文档访问被拒绝,javascript,angularjs,cors,angularjs-http,azure-cognitive-search,Javascript,Angularjs,Cors,Angularjs Http,Azure Cognitive Search,我们已经创建了一个AngularJS 1项目,我们可以使用POST成功地使用搜索功能。我们添加了一个控制器,用于将文档添加到索引中,但我们不断得到消息 XMLHttpRequest:网络错误0x80070005,访问被拒绝 和我们搜索的索引相同 我们已经为索引启用了CORS 这是我们的代码: var value = [ { "@search.action": "mergeOrUpload", "id": vm.id, "name": vm.name, "key

我们已经创建了一个AngularJS 1项目,我们可以使用POST成功地使用搜索功能。我们添加了一个控制器,用于将文档添加到索引中,但我们不断得到消息

XMLHttpRequest:网络错误0x80070005,访问被拒绝

和我们搜索的索引相同

我们已经为索引启用了CORS

这是我们的代码:

var value = [
  {
    "@search.action": "mergeOrUpload",
    "id": vm.id,
    "name": vm.name,
    "keywords": vm.keywords,
    "url": vm.url
  }
];

var url = "https://xxx.search.windows.net/indexes/xxx/docs/index?api-version=2015-02-28";

ModalService.showLoading();

$http({
  method: "POST",
  url: url,
  headers: {
    "api-key": "XXX",
    "Content-Type": "application/json"
  },
  data: {
    "value": value
  }
})
.success(function (data, status) {
  vm.results = data;
  ModalService.hideLoading();
})
.error(function (data, status) {
  ModalService.hideLoading();
  ModalService.showError(data);
});

有一些文档可以使用REST添加新文档,所以我不确定我们缺少了什么。

Azure Search只允许通过CORS进行查询。这记录在:

CORS选项 默认情况下,客户端JavaScript无法调用任何API,因为浏览器将阻止所有跨源请求。要允许对索引进行跨源查询,请通过设置corsOptions属性启用CORS(跨源资源共享)。请注意,出于安全原因,只有查询API支持CORS

原因是您的客户机需要访问管理API密钥才能修改索引,而且由于您不能真正信任客户机,这似乎是个坏主意

我们建议您执行任何操作,通过可以首先对客户端进行身份验证的服务修改索引