2013-08-30 14 views
5

私は、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) { 

       } 
      }); 
+3

を助けている場合

を参照してください。 Webアプリケーションがサーバーと同じドメイン上にシンプルなプロキシサーバーを実行する必要があります。このサーバーは、SalesForce APIエンドポイントに要求を転送し、結果を送信します。 – Anant

+0

ありがとうございます。それは役に立ちます – wisemanIV

+0

私は簡単なRuby Sinatraプロキシをセットアップし、それは完全に動作します。私のアプリは複数のサブドメインで動作するHTTPSなので、まだRUbyコードにアクセス制御レスポンスヘッダーを設定しています - レスポンス['Access-Control-Allow-Origin'] = '*' – wisemanIV

答えて

0

...

私は同じ問題を持っていたし、問題を解決しているように見えました。これは、SalesforceのエンドポイントがCORSをサポートしていない場合は、[はい、あなたが唯一のクライアントからそのサービスにアクセスすることはできませんhere

関連する問題