将用户/传递从IE8 / 9发送到node.js代理

时间:2013-05-28 09:55:42

标签: node.js internet-explorer backbone.js xdomainrequest node-http-proxy

我们有使用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发送到节点代理服务器?

1 个答案:

答案 0 :(得分:1)

是的,我实际上写了一个库来做这件事。

https://github.com/victorquinn/Backbone.CrossDomain

它可以作为Backbone.sync()的替代品,因此IE7 / 8/9上的任何请求都将使用IE的XDomainRequest对象而不是XMLHttpRequest。主要的想法是你不应该改变你的任何模型代码,但任何推迟到sync()的东西都会在以前没有的情况下正常工作。

如果您在使用该库时遇到任何问题,请随时与我联系。

另一种选择是将代理服务器放在与Backbone应用程序相同的域上(这将消除使用XDomainRequest对象的需要),但似乎这不是一个选项。