问题
如何从安装在我的帐户中的自定义应用向另一个帐户的 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 不支持或保证此代码。在评论部分发布您的任何问题,或尝试在线搜索解决方案。
翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性
如对翻译准确性有任何疑问,请以文章的英语版本为准。