【问题标题】:Add document access denied添加文档访问被拒绝
【发布时间】:2017-03-17 02:34:05
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多