Salesforce LiveAgent Rest API 400 Ошибка неверного запроса

Я пытаюсь сделать простой запрос REST GET к API Salesforce Live Agent, чтобы проверить, доступна ли услуга.

Я могу успешно выполнить простой запрос GET из моего веб-клиента REST (подключаемый модуль Chrome - Boomerang), но не могу успешно выполнить запрос из 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 с этим проблем нет.


person Craig    schedule 19.10.2017    source источник
comment
Может ли это быть междоменной проблемой?   -  person Roamer-1888    schedule 19.10.2017
comment
Он работает из клиента REST плагина Chrome.   -  person Craig    schedule 19.10.2017
comment
Хорошо, я понимаю, но, может быть, плагин и браузер не идентичны в отношении междоменных ограничений? Это стоит проверить.   -  person Roamer-1888    schedule 19.10.2017
comment
вы можете начать отладку с помощью инструментов вашего браузера или такого инструмента, как Fiddler, чтобы изучить полный запрос, сделанный вашим кодом, и сравнить то, что вы отправляете, с тем, что отправляет ваш REST-клиент, и найти разницу.   -  person ADyson    schedule 19.10.2017


Ответы (1)


Ответ кроется в настройках CORS REST API Live Agent в соответствии с поддержкой Saleforce. Я еще не пробовал решение, но оно кажется правдоподобным. По сути, вы не можете выполнять запрос AJAX из браузера из-за ограничений CORS для их REST API. Вам нужно внести домен в белый список.

Они ссылались на эту статью...

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

Обходной путь, который я использовал до них, в конце концов, через 2 недели, вернувшийся ко мне с ответом, заключался в создании прокси-сервера PHP для вызова Live Agent REST API.

По сути, мой код AJAX вызывает файл прокси-сервера PHP на моем сервере, который затем вызывает REST API Live Agent через curl, а затем отправляет ответ обратно на запрос Ajax, что позволяет избежать проблемы CORS.

person Craig    schedule 20.10.2017