以下是我正面临的问题。带有Backbone的PHP跨域(AJAX)代理
我在域A.建设我的REST API与Laravel 4
的API将提供JSON的,以我的应用程序,它是在域B.
为避免交叉来源政策问题,我已经做了两件事:
- 客户端 - 我已经下载了一个PHP代理脚本 - 上域B - ,并用它来发送GET,POST请求我的API域A.
我已经使用了位于github的脚本。
- 服务方面,我已经让Laravel接受CORS。
一切都很好,事情是“分类”工作。
前端由Backbone控制,这导致我的问题来源。
望着代理的文档,这里是应该如何使用jQuery使用:
$('#target').load('http://www.yourdomain.com/proxy.php', {
csurl: 'http://www.cross-domain.com/',
param1: value1,
param2: value2
});
基本上,我送csurl我的REST API领域的价值 - DOMAINA
的其他参数(param1和param2)用于向api发送不同的东西,就像csrf令牌等等。
找到Backbone,我似乎无法使Backbone模型正常工作,我不知道如何处理发送参数。
这里是骨干模式:
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 - 我发现它在该职位,职位实际工作 - 但我没有得到成功的回调。
基本上,我不知道如何将代理的文档实现为Backbone。
有什么建议吗?
嘿尤金,TY更换您的视图代码! - 我检查过了 - Laravel(包含我的api,服务器端)发送了正确的JSON头文件 - 我检查了它,直接在浏览器中查看响应。问题是代理脚本,我相信它会将标题更改为“text/html” - 现在,我已将dataTpe文本添加到我的主干模型,但它仍然不起作用 –
我必须配置代理脚本并添加服务器的URL,以便脚本允许它。现在,我使用正确的标题获得有效的JSON响应,但Backbone的成功回调不会触发。这真的很奇怪。有任何想法吗? –
我没有想法,在这种情况下,我使用调试器:-) –