2013-08-30 20 views
5

Stworzyłem usługę AngularJS, która uderza w interfejs API REST Salesforce bezpośrednio od klienta. Jednak nie udało mi się go uruchomić z powodu tych samych ograniczeń pochodzenia. Nawet podczas uzyskiwania dostępu do nieuwierzytelnionych usług REST i próbowania zarówno $ http, $ http.json i Ajax. Próbowałem również wielu kombinacji Json, Jsonp itp.Jaki jest poprawny wzorzec architektoniczny wywołania REST w domenie krzyżowej w AngularJS?

Biorąc pod uwagę, że miałem tak wiele problemów, myślę, że moje ogólne podejście jest nieprawidłowe. Być może muszę skonfigurować serwer proxy do tego? Moim zapleczem jest Firebase, więc nie mam obecnie własnego serwera.

Nie wierzę, że interfejs API Salesforce obsługuje jednostki COR i nie można tego zmienić.

Oto przykład tego, co próbowałem użyć $ http i Ajax.

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

Tak, jeśli punkty końcowe Salesforce nie obsługują CORS to nie można uzyskać dostęp do swoich usług tylko z klientem. Musisz uruchomić prosty serwer proxy w tej samej domenie, w której znajduje się twoja aplikacja internetowa, która przekazuje żądania do punktów końcowych API SalesForce i wysyła twoje wyniki. – Anant

+0

Dzięki. To pomocne – wisemanIV

+0

Konfiguruję prosty serwer proxy Ruby Sinatra i działa idealnie. Moja aplikacja to HTTPS działająca w wielu subdomenach, więc wciąż ustawiam nagłówek odpowiedzi kontroli dostępu w kodzie RUby - odpowiedź ['Access-Control-Allow-Origin'] = '*' – wisemanIV

Odpowiedz

0

Musisz iść do ustawienia zdalnej obrębie SalesForce następnie CORS i białej listy nazwę domeny ...

miałem ten sam problem i wydawało się, że problem został rozwiązany.

Zobacz, czy to pomaga here