Salesforce LiveAgent Rest API 400错误请求错误

时间:2017-10-19 00:04:05

标签: jquery ajax salesforce http-status-code-400

我正在尝试向salesforce Live Agent API发出简单的REST GET请求,以检查服务是否可用。

我可以从基于Web的REST客户端(Chrome插件 - Boomerang)成功发出简单的GET请求,但无法从JQuery $ .ajax成功发出请求。

我收到了400 Bad Request错误。

$(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 :(得分: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周之后回复给我,就是创建一个PHP代理来调用Live Agent REST API。

基本上,我的AJAX代码调用服务器上的PHP代理文件,然后通过curl调用Live Agent REST API,然后将响应发送回Ajax请求,从而避免出现CORS问题。