首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs http-proxy不转发put请求

nodejs http-proxy不转发put请求
EN

Stack Overflow用户
提问于 2013-09-17 06:01:44
回答 1查看 1.9K关注 0票数 3

我已经使用http-proxy和express中间件做了一个代理。然而,它并没有转发PUT请求--这对于我要代理的应用程序来说是必不可少的。我做错了什么?

(代理服务器的作用是为代理背后的app提供身份验证。如果有其他方法可以做到这一点,我将不胜感激。)

代码语言:javascript
复制
var proxy = new httpProxy.RoutingProxy();
var app = express();

app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.engine('ejs', require('ejs-locals'));
app.use(express.logger());
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.session({secret: 'rupert'}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(function(req, res) {
proxy.proxyRequest(req, res, {
  host: 'localhost',
  port: 8080
});
});
app.use(express.static(__dirname + '/../../public'));
});

app.get('/login', function(req, res){
  res.render('login', { user: req.user, message: req.flash('error') });
});

app.post('/login', 
  passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),
  function(req, res) {
  res.redirect('/');
});

app.get('/logout', function(req, res){
  req.logout();
  res.redirect('/')
});

app.all('/*', function(req, res, next) {
  return next();
});

app.listen(3000,'localhost');
EN

回答 1

Stack Overflow用户

发布于 2014-01-12 13:31:13

您可以尝试使用http-proxy的缓冲区函数,如下所示:https://github.com/nodejitsu/node-http-proxy/issues/180

或者,express对请求对象执行非标准操作可能会出现问题:请参阅https://github.com/nodejitsu/node-http-proxy/issues/153上的issue#153

特别是来自Marak的回应:“这是一个明确的问题。

Connect / Express中间件对响应对象做了非标准的事情,中断了流。尝试使用原始请求模块而不是http-proxy。

如果您需要合适的中间件堆栈,请查看https://github.com/flatiron/union

不知道联合是否会解决这个问题,但express似乎改变了请求,超出了http-proxy所能处理的范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18838042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档