0

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

4

1 回答 1

1

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

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

它充当 Backbone.sync() 的替代品,因此 IE7/8/9 上的任何请求都将使用 IE 的 XDomainRequest 对象而不是 XMLHttpRequest。主要思想是您不必更改任何模型代码,但是任何遵循 sync() 的内容现在都可以正常工作,而以前不能。

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

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

于 2013-05-29T13:52:41.863 回答