私は、Salesforce REST APIをクライアントから直接起動しているAngularJSサービスを作成しました。しかし、私は同じ起源の制限のためにそれを働かせることができませんでした。認証されていないRESTサービスにアクセスし、$ http、$ http.json、Ajaxの両方を試しても。また、私は非常に多くの問題、私は私の一般的なアプローチが間違っていることを考えているを持っていたことを考えると、JSON、JSONPなどAngularJSでのクロスドメインRESTコールの正しいアーキテクチャパターンは何ですか?
の組み合わせの多くを試みました。おそらく私はこれのためにプロキシサーバーをセットアップする必要がありますか?私のバックエンドはFirebaseなので、私は現在自分のサーバを持っていません。
Salesforce APIがCORをサポートしているとは思えません。変更できません。
ここでは、$ httpとAjaxを使って試した例を示します。あなたはその後、SalesForceの内リモート設定にCORSを移動して、ドメイン名をホワイトリストに登録する必要が
return $http.jsonp('https://na1.salesforce.com/services/data/',{
headers: {
'Content-type': 'application/json', 'Accept': 'application/json'
}}).
success(function (data, status, headers, config) {
callback(data);
console.debug(data.json);
}).
error(function (data, status, headers, config) {
console.debug("getVersions: failed to retrieve data: "+eval(data));
});
$.ajax({
url: 'https://na15.salesforce.com/services/data',
type: "GET",
dataType: "jsonp",
beforeSend: function(xhrObj){
xhrObj.setRequestHeader("Content-Type","application/json");
xhrObj.setRequestHeader("Accept","application/json");
xhrObj.setRequestHeader("X-Requested-With", "XMLHttpRequest");
},
success: function (data) {
console.debug(data);
callback(data);
},
error: function(data) {
}
});
を助けている場合
を参照してください。 Webアプリケーションがサーバーと同じドメイン上にシンプルなプロキシサーバーを実行する必要があります。このサーバーは、SalesForce APIエンドポイントに要求を転送し、結果を送信します。 – Anant
ありがとうございます。それは役に立ちます – wisemanIV
私は簡単なRuby Sinatraプロキシをセットアップし、それは完全に動作します。私のアプリは複数のサブドメインで動作するHTTPSなので、まだRUbyコードにアクセス制御レスポンスヘッダーを設定しています - レスポンス['Access-Control-Allow-Origin'] = '*' – wisemanIV