질문
내 계정에 설치된 사용자 지정 앱에서 다른 계정의 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는 번역의 정확성을 보장하지 않습니다.
번역된 문서에 포함된 정보의 정확성과 관련하여 질문이 있으시면 문서의 공식 버전인 영문 버전을 참조하시기 바랍니다.