我正在尝试向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客户端没有问题。
答案 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问题。