質問
アカウントにインストールされているカスタムアプリから別のアカウントのAPIにAPIリクエストを送信し、以下のエラーが表示されないようにするにはどうすればよいですか?
エラーはプロキシ可能なURIではありません
回答
のデフォルトの動作client.request
は、Zendeskのプロキシ層を介してリクエストを送信するため、403はプロキシ可能なURI応答ではありません。
アカウントのカスタムアプリから別の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では、翻訳の正確さを期すために相応の努力を払っておりますが、翻訳の正確性については保証いたしません。
翻訳された記事の内容の正確性に関して疑問が生じた場合は、正式版である英語の記事を参照してください。
0 コメント
サインインしてコメントを残してください。