2013-08-30 42 views
5

Tôi đã tạo một dịch vụ AngularJS đang truy cập API REST Salesforce trực tiếp từ máy khách. Tuy nhiên, tôi đã không thể làm cho nó hoạt động do cùng một hạn chế xuất xứ. Ngay cả khi truy cập các dịch vụ REST không được xác thực và thử cả $ http, $ http.json và Ajax. Tôi cũng đã thử rất nhiều sự kết hợp của Json, Jsonp, vvMẫu kiến ​​trúc chính xác cho cuộc gọi REST miền chéo trong AngularJS là gì?

Vì tôi đã có rất nhiều vấn đề, tôi nghĩ rằng cách tiếp cận chung của tôi là không chính xác. Có lẽ tôi cần phải thiết lập một máy chủ proxy cho điều này? Phụ trợ của tôi là Firebase nên hiện tại tôi không có máy chủ của riêng mình.

Tôi không tin rằng API Salesforce hỗ trợ COR và tôi không thể thay đổi điều đó.

Dưới đây là ví dụ về những gì tôi đã thử sử dụng $ http và 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

Vâng, nếu điểm cuối Salesforce không hỗ trợ CORS thì bạn không thể truy cập vào dịch vụ của họ từ chỉ khách hàng. Bạn sẽ cần chạy một máy chủ proxy đơn giản trên cùng một miền mà ứng dụng web của bạn là máy chủ, chuyển tiếp các yêu cầu tới các điểm cuối API SalesForce và gửi kết quả của bạn. – Anant

+0

Cảm ơn. Đó là hữu ích – wisemanIV

+0

Tôi thiết lập một proxy đơn giản của Ruby Sinatra và nó hoạt động hoàn hảo. Ứng dụng của tôi là HTTPS chạy trên nhiều tên miền phụ nên tôi vẫn đặt tiêu đề phản hồi điều khiển truy cập trong mã RUby - phản hồi ['Access-Control-Allow-Origin'] = '*' – wisemanIV

Trả lời

0

Bạn cần phải đi vào Cài đặt từ xa trong vòng SalesForce sau đó CORS và danh sách trắng các tên miền ...

tôi đã cùng một vấn đề và nó dường như đã giải quyết vấn đề này.

Xem nếu điều này giúp here

Các vấn đề liên quan