2016-11-24 6 views
2

HTML 웹 리소스로 Dynamics CRM 폼을로드 할 때 Chrome 브라우저 콘솔에서 아래 오류가 발생합니다.웹 리소스의 Dynamics CRM 웹 API 인증 오류

은 https : ‌ //xxxx.api.crm6.dynamics.com/api/data/v8.2/ < 사용자 지정 엔터티>. 'Access-Control-Allow-Origin'헤더가 요청 된 리소스에 없습니다. 따라서 'https : //.crm6.dynamics.com'원본은 액세스 할 수 없습니다. 응답은 HTTP 상태 코드 (401)

<script type="text/javascript"> 

var clientUrl = "https://xxxx.api.crm6.dynamics.com/api/data/v8.2/" 

function GetAccounts() { 
    var url = clientUrl + "accounts" 

    $.ajax({ 
     method: "GET", 
     url: url, 
     async: false, 
     beforeSend: getAccountsBeforeSendCallback, 
     fail: getAccountsFailCallback, 
     done: getSavingGoalsDoneCallback, 
     success: getAccountsSuccessCallback 
    }); 
} 

function getAccountsBeforeSendCallback(jqXHR, settings) { 
    debugger 
    jqXHR.setRequestHeader("OData-MaxVersion", "4.0"); 
    jqXHR.setRequestHeader("OData-Version", "4.0"); 
    jqXHR.setRequestHeader("Accept", "application/json"); 
    jqXHR.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
} 
</script> 
+0

가장 많이 논의되는 주제입니다. CORS & JSONP이 트릭을 수행합니다. https://stackoverflow.com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-requested-resource –

답변

1

당신이 다른 도메인에 요청을하고있는 것 같습니다했다. clientUrl이 동일한 도메인에 있는지 확인 하시겠습니까?

var clientUrl = "https://xxxx.api.crm6.dynamics.com/api/data/v8.2/"; 
var rightUrl = window.Xrm.Page.context.getClientUrl() + "/api/data/v8.2"; 
if (clientUrl !== rightUrl) { 
    console.log("You will get the 'Access-Control-Allow-Origin' error!"); 
} 

많은 사람들이 $ .ajax 및 XmlHttpRequest 관련 문제가 있습니다. 다행히도 도서관에서 이런 일을 처리 할 것입니다. 코드와 동일하게 수행되는 crm-sdk의 예 :

<script type="text/javascript" src="CRMSDK.js"></script> 
<script type="text/javascript"> 
    var WebAPI = window.CRMSDK.WebAPI; 
    WebAPI.retrieveMultiple("account").then(function (data) { 
     getAccountsSuccessCallback(data); //this is your method. 
    }); 
</script>