我们有使用rest API的backbone.js应用程序。每个请求用户/传递应该 被发送到API。这是我们发送请求的方式:
`Backbone.BasicAuth.set(tempUser,tempPass);
this.fetch({
error: function(){
// code
},
success:function(model, response){
// code
}} );`
这不适用于IE 8/9,因此我们创建了node.js服务器,并使用node-http-proxy模块创建了代理服务器来拦截所有请求。
这是节点代理服务器:
`var httpProxy = require('http-proxy');
var options = {'target': {
'host': 'test.someserver.com',
'port': 8800
}};
httpProxy.createServer(function(req, res, proxy) {
req.headers.host = 'test.someserver.com';
proxy.proxyRequest(req, res, options);
}).listen('8080');`
我们现在的问题是将用户/传递发送到节点代理服务器,我们知道XDomainRequest不支持自定义头,我们不喜欢将用户/传递作为查询字符串发送(它不安全)。
有没有办法将用户/传递从IE 8/9发送到节点代理服务器?
答案 0 :(得分:1)
是的,我实际上写了一个库来做这件事。
https://github.com/victorquinn/Backbone.CrossDomain
它可以作为Backbone.sync()的替代品,因此IE7 / 8/9上的任何请求都将使用IE的XDomainRequest对象而不是XMLHttpRequest。主要的想法是你不应该改变你的任何模型代码,但任何推迟到sync()的东西都会在以前没有的情况下正常工作。
如果您在使用该库时遇到任何问题,请随时与我联系。
另一种选择是将代理服务器放在与Backbone应用程序相同的域上(这将消除使用XDomainRequest对象的需要),但似乎这不是一个选项。