首页 > 解决方案 > Zendesk API + Angular:由于 CORS 无法接收数据

问题描述

我正在使用Zendesk API并且能够发出发布请求(即使响应告诉我有错误),但我无法使用我的 Angular 4 应用程序和HttpClient发出 GET 请求。

searchZendesk( query : string ) {
    console.log(query)

    this.search( query ).subscribe(
      (data) => console.log(data),
      (err) => console.log(err.error),
      () => console.log("complete")
    )
}

search( query : string ) {
    let headers = this.setOptions()
    let url = `${ this.baseUrl }/search.json?query=${ query }`

    return this.http.get(`${ this.baseUrl }/search.json?query=${ query }`, { headers: headers })
  }

setOptions() {
    let key = this.setKey()
    let headers = new HttpHeaders({
      'Authorization': key,
    })

    return headers
}

打电话后searchZendesk()我收到以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.

标签: angularcorszendeskzendesk-api

解决方案


您需要将 Zendesk 和 Angular 代码托管在同一个域上以避免 CORS 问题。

你可以完全控制如何部署你的 js 代码(角度应用程序),所以我把它留给你。

要在同一域上托管 zendesk,请按照本文进行操作:

https://support.zendesk.com/hc/en-us/articles/203664356-Changing-the-address-of-your-Help-Center-subdomain-host-mapping-

——</p>

此外,按照这篇文章https://develop.zendesk.com/hc/en-us/articles/360001074268-Making-cross-origin-browser-side-API-requests您应该能够从客户端访问大多数 API如果您使用 oAuth 身份验证,则没有 CORS 问题!


推荐阅读