问题
如何从安装在我帐户中的自定义应用向另一个帐户的 API 发出 API 请求,但收不到消息, 因为错误不是可代理的 URI。
回答
的默认行为 client.request 是通过 Zendesk 的代理层发送请求,该代理层是一个阻止帐户相互发送 HTTP 请求的网关,这会导致 403 不是可代理的 URI 响应。
要从您帐户中的自定义应用向另一个 Zendesk 实例的 API 发出 客户端 请求,传递 cors: true 在请求选项对象中添加 。这允许请求绕过 Zendesk 的代理层。
// 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);
});
}
关于客户端请求与服务器端请求的注释
每个 Zendesk API 端点都实施跨域资源共享 (CORS)。如果应用的请求来自客户端,则 CORS 响应会失败,除非 使用OAuth。如果您仅需要 GET 方法,请将OAuth密钥的范围限定为对特定资源的只读访问,并在客户端实施。
如果应用向另一个 Zendesk API 发出的请求是使用 PUT 或 POST 方法写入数据,那么这两个选项都不安全,因为它会导致密钥暴露在网络流量中。在大多数工作流程中,您可以使用 安全设置 来防止密钥出现安全问题。
安全设置对此工作流程不起作用,因为它们需要请求通过 Zendesk 的代理层。如果您需要应用写入数据,请考虑服务器端解决方案,其中对另一个 Zendesk API 的请求将发送回应用,在服务器端进行处理。
免责声明:本文仅供说明之用。Zendesk 不支持并不保证该代码。如有任何问题,请将其发布在评论部分,或尝试在线搜索解决方案。
翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性
如对翻译准确性有任何疑问,请以文章的英语版本为准。