带有 .Get() 对 Azure 搜索 API 的请求的 Angular HttpClient“未知错误”

Posted

技术标签:

【中文标题】带有 .Get() 对 Azure 搜索 API 的请求的 Angular HttpClient“未知错误”【英文标题】:Angular HttpClient "Unknown Error" with .Get() Request to Azure Search API 【发布时间】:2018-05-30 14:45:48 【问题描述】:

目前面临的问题是对 Azure 搜索 API 的请求返回“未知错误”。

我在邮递员中收到了.Get() 请求,并认为它在理论上与使用 Http 客户端在 Angular 中的设置相同。

export class AzureSearchConfigComponent implements OnInit 
synonyms: any[];
private synonymUrl = 'https://name.search.windows.net/synonymmaps?api-version=2017-11-11'
constructor(private http: HttpClient)  

ngOnInit() 

let headers = new HttpHeaders();
headers = headers
  .set('Content-Type', 'application/json')
  .set('api-key','xxxx-xxx-xxxxx');

this.http.get(this.synonymUrl,headers:headers)
  .subscribe(
    repsonse => 
      console.log(repsonse);
    
  );


错误信息:

ERROR HttpErrorResponse headers: HttpHeaders, status: 0, statusText: “未知错误”,url:null,ok:false,...

邮递员回复:

同样出现错误:

预检响应无效(重定向)

【问题讨论】:

正如我所说,它适用于邮递员,[name] 将是我的 azure 订阅的名称,只是不想公开。 哦闭嘴,我没看到 我读到这与 CORS 有关,但我在 localhost:4200 本地运行 angular 应用程序,尝试在 chrome 上禁用互联网安全但仍然没有运气 嗯,如果是 CORS,那么控制台应该会告诉你 刚刚在“未知错误”之前发布了另一个错误:预检响应无效(重定向) 【参考方案1】:

临时解决方案是禁用谷歌浏览器上的网络安全,方法是在 cmd 中运行以下命令(在程序 x86 中找到 chrome.exe 后)

--disable-web-security --user-data-dir

这是因为 chrome 中的 CORS 设置导致重定向飞行,我目前也在尝试在代理上托管,看看是否可以在不禁用网络安全的情况下解决问题,如果成功将在此处发布

【讨论】:

这是在使用 Rider 测试 typescript 时唯一对我有用的东西。它似乎只能直接与 Chrome 一起使用,而不是任何基于 Chrome 的浏览器。我无法让 Brave 或 Edge 工作。

以上是关于带有 .Get() 对 Azure 搜索 API 的请求的 Angular HttpClient“未知错误”的主要内容,如果未能解决你的问题,请参考以下文章

向 Azure Blob 存储发出 GET 请求时授权失败 [REST API][Azure Blob 存储]

在 Winrt 中使用带有 Rest API 的 Azure,签名有问题

如何使用 REST API 创建 Azure 搜索索引器

带有 PHP 的 Azure 通知中心 REST API

带有开发人员门户内容的 Azure API 管理实例副本

Azure 搜索索引的 OData API 不返回元数据