我在Apex中有一个相对简单的Rest API类。给定Id,doGet方法检索有问题的记录。
@HttpGet
global static VendorCostWrapper doGet() {
RestRequest req = RestContext.request;
RestResponse res = RestContext.response;
VendorCostWrapper response = new VendorCostWrapper();
String vcId = req.requestURI.substring(req.requestURI.lastIndexOf('/') + 1);
findVendorCost(res, response, vcId);
res.addHeader('Access-Control-Allow-Origin', '*');
return response;
}
当我从Salesforce Workbench应用程序调用它时,这就像一个冠军。不幸的是,当我尝试使用Angular从Visualforce页面调用端点时:
$scope.restTest = function() {
$http({
method: 'GET',
contentType: 'application/json',
url: '/services/apexrest/v1/vendorcosts/a0J8A000000VdQm',
headers: {
'Authorization': 'Bearer {!GETSESSIONID()}'
},
dataType: 'json'
}).then(function successCallback(response) {
console.log(response);
}, function errorCallback(response) {
console.log(response);
});
}
我得到了可怕的“No'Access-Control-Allow-Origin'标头出现在请求的资源上。”错误。我希望班上的res.addHeader(...)行可以解决这个问题,但是唉,它还没有。我哪里误入歧途?