这是我面临的问题。
我正在域A上用Laravel 4构建我的rest。
api将向我的应用程序提供JSON,该应用程序位于域B。
为了避免跨源政策问题,我做了两件事:
我使用了位于这里的脚本,在github上。
一切都很好,一切都是“某种”的工作。
前端由主干网控制,这使我找到了问题的根源。
查看代理的文档,下面是如何在jQuery中使用它:
$('#target').load('http://www.yourdomain.com/proxy.php', {
csurl: 'http://www.cross-domain.com/',
param1: value1,
param2: value2
});基本上,我发送了一个csurl,其值为REST Api域- domainA。
其他params (param1和param2)用于向api发送不同的内容,,如csrf令牌等。
说到骨干,我似乎无法使骨干模型正常工作,我也不知道如何处理发送params。
下面是骨干模型:
var MyModel = Backbone.Model.extend({
url: 'http://domainB.dev/proxy.php'
});在我看来,我实例化它并尝试传递参数:
var myModel = new MyModel();
myModel.save({
data: {
csurl: 'http://domainA.dev'
param1: 'mytoken'
}
}, {
success: function() {},
error: function() {}
});这些数据没有到达我的api --我在文章中找到了它,这个帖子实际上有效--但是我没有得到一个成功的回调。
--基本上,我不知道如何将代理的文档实现为主干。
有什么想法吗?
发布于 2014-03-30 12:19:59
我想这和这里的问题是一样的
我查看了proxy.php脚本,没有找到任何json内容类型的头。所以再次:您可以使用以下代码dataType:'text‘来修复它
myModel.save(
{
data: {
csurl: 'http://domainA.dev'
param1: 'mytoken'
}
},
{
dataType: 'text',
success: function(){},
error: function(){}
}
);..。或通过将正确的Content-type头设置为application/json值来修复服务器端。
发布于 2014-03-30 18:33:34
首先,您需要删除模型中的url参数。
var MyModel = Backbone.Model.extend({});然后创建一个集合。
var MyCollection = Backbone.Collection.extend({
model: MyModel,
url: 'http://domainB.dev/proxy.php',
parse: function(data) {
return data;
}
});之后,将视图代码替换为下面的代码。
var that = this;
formData = {
csurl: 'http://domainA.dev',
param1: 'mytoken'
}
this.collection = new MyCollection();
this.collection.save({
data: formData,
success: function(collection, response) {
console.log(that.collection);
alert("success");
},
error: function() {
alert("error");
}
}, {});https://stackoverflow.com/questions/22733799
复制相似问题