質問
自分のアカウントにインストールされているカスタム アプリから別のアカウントの API に API 要求を行い、以下のエラーを受信しないようにするにはどうすればよいですか?
エラーはプロキシ可能な URI ではありません
回答
のデフォルトの動作client.request
Zendesk のプロキシ レイヤーを介してリクエストを送信するため、 403 is not a proxyable URI response が返されます。
アカウントのカスタム アプリから別の Zendesk アカウントの API にclient.requestを作成するには、次のように渡します。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を実装しています。したがって、アプリからのリクエストがクライアント側で発生した場合、 OAuth が使用されていない限り、CORS レスポンスで失敗します。データの読み取り (GET) のみが必要な場合は、OAuth トークンの範囲を特定のリソースへの読み取り専用アクセスに限定し、このクライアント側を実装します。
他の Zendesk API へのアプリのリクエストがデータの書き込み (PUT、POST) である場合、トークンがネットワーク トラフィックに公開されるため、これは安全なオプションではありません。他のほとんどのワークフローでは、安全な設定を使用してトークンの公開を防ぐことができます。
ただし、安全な設定は、リクエストが Zendesk のプロキシ レイヤーを通過する必要があるため、このワークフローでは機能しません。データの書き込みが必要な場合は、他の Zendesk の API へのリクエストがサーバー側で処理され、応答がアプリに返されるサーバー側のソリューションを検討してください。
翻訳に関する免責事項:この記事は、お客様の利便性のために自動翻訳ソフトウェアによって翻訳されたものです。Zendeskでは、翻訳の正確さを期すために相応の努力を払っておりますが、翻訳の正確性については保証いたしません。
翻訳された記事の内容の正確性に関して疑問が生じた場合は、正式版である英語の記事を参照してください。