2017-10-19 18 views
0

私は、Salesforce Live Agent APIにサービスが利用可能かどうかを確認する簡単なREST GETリクエストを作成しようとしています。Salesforce LiveAgent Rest API 400 Bad Request Error

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); } 
    }); 

} 

誰かが私が間違っているかもしれないことについていくつかの光を当てはめることができますか?私は問題がデータ形式であると思うが、私のレストクライアントはそれに問題はない。

+1

ドメイン間の問題ですか? –

+0

これはChromeプラグインのRESTクライアントから機能します。 – Craig

+0

OK、プラグインとブラウザがドメイン間の制約に関して同一ではないかもしれませんが、それはチェックの価値がある。 –

答えて

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 Proxyファイルを呼び出し、curl経由でLive Agent REST APIを呼び出し、応答をAjaxリクエストに送り返し、CORSの問題を回避します。