添加文档访问被拒绝

时间:2016-11-03 13:25:17

标签: javascript angularjs cors angularjs-http azure-search

我们已经创建了一个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添加新文档,因此我不确定我们缺少什么。

1 个答案:

答案 0 :(得分:1)

Azure搜索仅允许通过CORS进行查询。这记录在MSDN

  

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

原因是您的客户需要访问管理员API密钥来修改索引,因为您无法真正信任客户端,这似乎是一个坏主意。

我们建议您从可以首先验证客户端的服务中执行任何修改索引的操作。