问题

如何从安装在我的帐户中的自定义应用向另一个帐户的 API 提交 API 请求,而不会收到以下错误?

错误不是可代理的 URI。

答案

的默认行为client.request 是通过 Zendesk 的代理层发送请求,导致 403不是可代理的 URI响应。

要从您帐户中的自定义应用向另一个 Zendesk 帐户的 API 提交 client.请求,通过 cors: true在请求选项对象中。这样做将使请求可绕过 Zendesk 的代理层,从而阻止从一个 Zendesk 向另一个 Zendesk 发出 HTTP 请求。

// make a request from a custom app in one Zendesk to the API of another Zendesk
 
 function newRequest(){
  var options = {
        url: 'https://subdomain.zendesk.com/api/v2/....',
        headers: { "Authorization": "Bearer OAUTH_TOKEN"},
        type: 'POST',
data: JSON.stringify({my:"json", values:"go here"}),
contentType: "application/json",
        cors: true
      }
      client.request(options).then(
        function(response) {
          console.log(response);
        });
  }

客户端与服务器端请求的注释

我们的每个 API 端点都实施了 CORS。因此,如果应用的请求来自客户端,则其将返回 CORS 响应失败,除非 使用 OAuth。如果仅需要读取数据 (GET),将 OAuth 密钥范围为对特定资源的只读访问,并在客户端实现。

如果应用对其它 Zendesk API 的请求将写入数据(Put、POST),这不是一个安全的选项,因为密钥会暴露在网络流量中。在大多数其他工作流程中, 安全设置可用于防止暴露密钥。

然而,安全设置对此工作流程不起作用,因为它们需要通过 Zendesk 的代理层发送请求。如果需要写入数据,请考虑服务器端解决方案,即在服务器端处理对另一个 Zendesk API 的请求,并将响应发送回应用。

免责声明:这篇文章仅用于教学目的。Zendesk 不支持或保证此代码。在评论部分发布您的任何问题,或尝试在线搜索解决方案。

翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性

如对翻译准确性有任何疑问,请以文章的英语版本为准。

由 Zendesk 提供技术支持