我有一个 API 托管在一个启用了 CORS 的域上,具体的头信息如下:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Max-Age: 1728000
我能够从hackst.com发起GET或POST请求,它们可以正常工作。链接:http://hackst.com/#w3SbV
从我的backbone应用程序托管在另一个域上时,GET请求可以正常工作。但是当我尝试创建和保存新模型(即发起POST请求)时,会出现以下错误:
Failed to load resource: the server responded with a status of 501 (Not Implemented) http://projectwhatup.us:5000/api/posts
XMLHttpRequest cannot load http://projectwhatup.us:5000/api/posts. Origin http://ayush.projectwhatup.us is not allowed by Access-Control-Allow-Origin.
我的相关Backbone代码:
var newPostData = {
topic : "New Post",
body : "new body",
user_id : 1,
};
var newPostModel = new Post(newPostData);
this.model.create(newPostModel);
我甚至尝试重写create
方法并手动发起POST请求,如下:
create : function(data) {
console.log('overriden create');
$.ajax({
"url" : this.url,
"async" : true,
"beforeSend" : function(obj){
console.log(obj);
},
"contentType" : 'application/json',
//"crossDomain" : true, // uncommenting this doesnt help either
"headers" : {
},
"dataType" : 'json',
"type" : 'POST',
"data" : JSON.stringify(data),
"error" : function(err){
console.log('new post creation failed');
console.log(err);
},
"success" : function(resp){
console.log('new post created');
console.log(resp);
}
});
}
出现了相同的错误。
我也在JSFiddle上尝试了一个独立的GET请求(http://jsfiddle.net/X9cqh/5/),但是它失败了,尽管我的backbone应用程序可以正常进行GET请求。
此时我完全不知所措。有什么提示、指针或解决方案吗?
http://ayush.projectwhatup.us
启用。 - teddybeardAccess-Control-Allow-Origin: *
,jsfiddle 仍然失败 http://jsfiddle.net/X9cqh/9/ - Ayush