【问题标题】:Zendesk API + Angular: Cannot receive data due to CORS [duplicate]Zendesk API + Angular:由于CORS而无法接收数据[重复]
【发布时间】:2019-03-08 01:52:51
【问题描述】:

我正在使用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.

【问题讨论】:

    标签: angular cors zendesk zendesk-api


    【解决方案1】:

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

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

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

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

    ——

    此外,如果您使用了 oAuth 身份验证,那么在这篇文章 https://develop.zendesk.com/hc/en-us/articles/360001074268-Making-cross-origin-browser-side-API-requests 之后,您应该能够从客户端访问大多数 API 而不会出现 CORS 问题!

    【讨论】:

      【解决方案2】:

      如果 API 请求通过 OAuth 身份验证:

      Zendesk 在响应中包含一个特殊的 "Access-Control-Allow-Origin" CORS 标头。标头的值为“*”,它允许来自任何来源的页面的请求。标头基本上授予浏览器访问 Zendesk 域中资源的权限。

      【讨论】:

      • 请求来自 Zendesk,他无法访问!
      • @TarekN.Elsamni 感谢您的通知,我检查了那里的文档并编辑了我的答案!
      • 是的,这正是我在回答中提到的,但很好的是,您将它包含在此处,这样如果 zendesk 页面死了,我们就不会丢失它。 +1
      猜你喜欢
      • 2016-08-13
      • 2017-02-10
      • 2020-01-07
      • 2022-01-09
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      • 2021-11-09
      相关资源
      最近更新 更多