添加文档访问被拒绝

Add document access denied

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

XMLHttpRequest: Network Error 0x80070005, Access is denied

和我们搜索的索引相同。

我们已确保为索引启用了 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 搜索仅允许通过 CORS 进行查询。这记录在 MSDN:

CORS Options Client-side JavaScript cannot call any APIs by default since the browser will prevent all cross-origin requests. To allow cross-origin queries to your index, enable CORS (Cross-Origin Resource Sharing) by setting the corsOptions attribute. Note that for security reasons, only query APIs support CORS.

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

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