美元http.json请求被取消了
$http.jsonp requests are gettings canceled
我发誓这之前是工作的,休息一下,现在又不工作了…
我正在构建一个AngularJS应用程序,它连接到我用Salesforce创建的自定义公共REST api。我已经通过curl和apigee.com测试了REST api,数据正在正确返回。当我试图通过angular的$http.jsonp()方法调用相同的端点时,问题就出现了。当我尝试这样做时,请求被取消,根据chrome网络监视器。
角工厂:
angular.module('SalesforceService', [], function($provide){
$provide.factory('$salesforce', function($http, $q){
return {
login: function(email, password){
var endpoint = 'https://merchant.dev1.cs15.force.com/freelance/services/apexrest/FreelanceService?name=Jonathan&callback=JSON_CALLBACK';
var deferred = $q.defer();
console.log('...calling salesforce...');
$http.jsonp(endpoint)
.success(function(data){
console.log('--SALESFORCE RESPONSE:');
console.log(data);
deferred.resolve(data);
}).error(function(data, status, headers, config){
console.log('---SALESFORCE ERROR:');
console.log(data);
console.log(status);
console.log(headers());
console.log(config);
deferred.reject('An error occurred when attempting to login.');
});
return deferred.promise;
}
};
});
})
然后在我的一个控制器中通过$salesforce.login()…
Custom Salesforce REST Class:
@RestResource(urlMapping='/FreelanceService')
global class FreelanceService
{
global class TestObject{
public String message;
public TestObject(String message){
this.message = message;
}
}
@HttpGet
global static void goGet()
{
String name = RestContext.request.params.get('name');
TestObject o = new TestObject('Hello ' + name);
RestContext.response.addHeader('Content-Type', 'application/json');
RestContext.response.responseBody = formatResponse(o);
}
public static blob formatResponse(TestObject obj)
{
//instantiate string to be returned
String response;
//get callback parameter from url
String callback = RestContext.request.params.get('callback');
//return JSON wrapped in function if a callback parameter exists
if(callback!=null)
{
response = callback + '('+JSON.serialize(obj)+')';
}
else
{
response = JSON.serialize(obj);
}
return blob.valueOf(response);
}
}
对于我的生活,我不明白为什么这不起作用…什么好主意吗?
结果是因为Salesforce REST服务是从Sandbox而不是Production中提供的,Chrome会因为证书名称不匹配错误而自动取消请求。
来自Salesforce网站实施指南:
只有生产组织拥有有效的secure.force.com SSL使用HTTPS访问站点。注:如果站点在使用HTTPS访问沙盒(非生产)组织可能出现证书名称不匹配警告
相关文章:
- 如何在AngularJS中取消挂起的请求
- 是否可以通过Primefaces 3.3的自定义对话框取消Ajax请求
- 当搜索字段为空时,取消所有ajax请求
- Ajax 请求正在取消页面上的其他 JS 事件
- 取消FB.api(..)请求
- 取消已提交的http请求
- 选中/取消选中时复选框ajax请求
- HTTP_STREAM_PARSER_READ_HEADERS之后取消AJAX请求
- 为什么可以't我取消了这个Angular HTTP请求
- 在删除视图时取消所有传出的REST HTTP请求
- 我如何才能获得隐藏/取消隐藏按钮来同时发送帖子请求
- 如何在页面卸载时发送AJAX PUT请求而不取消
- 在慢速网络上,上一个Ajax请求会被下一个取消
- 取消请求动画设置时间后的帧
- 我如何取消请求后Mvc
- 使用jquery.Ajax()取消请求
- Firefox扩展:取消请求并发出假响应
- 如果提交了新的AJAX请求,取消请求
- 是否有一个优化取消请求动画帧
- NODE JS取消请求