2017-10-19 131 views
0

我正在嘗試向salesforce Live Agent API發出一個簡單的REST GET請求,以檢查服務是否可用。Salesforce LiveAgent Rest API 400錯誤請求錯誤

我可以從我的基於Web的REST客戶端(Chrome插件 - Boomerang)成功完成簡單的GET請求,但無法通過JQuery $ .ajax成功發出請求。

我收到400錯誤的請求錯誤。

$(document).ready(function(){ 
    checkAvailable("https://d.xxx-xx-xxx.salesforceliveagent.com/chat/rest/Visitor/Availability?org_id=xxxxxxxxxxxxxxx&deployment_id=xxxxxxxxxxxxxxx&Availability.ids=[xxxxxxxxxxxxxx]"); 
}); 

function checkAvailable(URL) 
{ 
    $.ajax({ 
     url: URL,  
     type: "GET", 
     beforeSend: function(xhr){ 
      xhr.setRequestHeader('X-LIVEAGENT-AFFINITY', "null"); 
      xhr.setRequestHeader('X-LIVEAGENT-API-VERSION', "41"); 
      }, 
     success: function(response) { alert('Success: ' + response); }, 
     error: function(req, err){ console.log('Error Message: ' + err); } 
    }); 

} 

任何人都可以闡明我可能做錯了什麼?我懷疑這個問題與數據格式有關,但我的Rest客戶端沒有問題。

+1

它可能是一個跨域問題? –

+0

它來自Chrome插件REST客戶端。 – Craig

+0

好的,我明白了,但是可能插件和瀏覽器在跨域約束方面並不完全相同?這值得檢查。 –

回答

0

答案在於根據Saleforce支持的Live Agent REST API CORS設置。我還沒有嘗試過這個解決方案,但似乎是合理的。基本上,由於REST API的CORS限制,您無法從瀏覽器進行AJAX查詢。您需要將域名列入白名單。

他們引用這篇文章......

https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/extend_code_cors.htm

周圍的工作我最終最終使用前給他們,後2 weeksm,又回到了我一個答覆,是創建一個PHP代理可以調用​​Live Agent REST API。

基本上,我的AJAX代碼調用了我的服務器上的PHP代理文件,然後通過curl調用Live Agent REST API,然後將響應發送回Ajax請求,從而避免了CORS問題。