2017-10-19 143 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问题。