添加文档访问被拒绝
Posted
技术标签:
【中文标题】添加文档访问被拒绝【英文标题】: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 添加新文档的文档,所以我不确定我们缺少什么。
【问题讨论】:
【参考方案1】:Azure 搜索仅允许通过 CORS 进行查询。这记录在MSDN:
CORS 选项 默认情况下,客户端 javascript 不能调用任何 API,因为浏览器会阻止所有跨域请求。要允许对索引进行跨域查询,请通过设置 corsOptions 属性启用 CORS(跨域资源共享)。请注意,出于安全原因,只有查询 API 支持 CORS。
原因是您的客户端需要访问管理 API 密钥来修改索引,并且由于您不能真正信任客户端,这似乎是个坏主意。
我们建议您从可以首先对客户端进行身份验证的服务执行任何修改索引的操作。
【讨论】:
以上是关于添加文档访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章