0

我写了一个 node.js 代理服务器(它github 上)

问题是 connect.bodyParser 不能很好地工作。对于这个 probject,我编写了自己的 bodyParser(参见文件“服务器”),但现在我再次使用 connect.bodyParser 进行测试。简而言之,我现在有类似的东西:

app.use(connect.bodyParser()) 
    .use(connect.query())
    .use(serveFromDB)
    .use(actAsProxyServer)
    .use(cacheContent)
    .use(function(err, req, res, next) {
        console.log("ERROR: " + JSON.stringify(err)) ;
        console.log("URL=" + req.url) ;
        console.dir(req.headers) ;
        res.setHeader('Content-Type', 'application/json');
        res.end(JSON.stringify(err));
}) ;

这是错误函数的输出:

ERROR: {"status":400}
URL=/Client/rest/cache/Clients/user123/X7X1

{ host: 'localhost:8000',
  connection: 'keep-alive',
  'x-requested-with': 'XMLHttpRequest',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
  'content-type': 'application/json; charset=utf-8',
  accept: 'application/json, text/javascript, */*; q=0.01',
  referer: 'http://localhost:8000/Client/index.jsp?cache=true',
  'accept-encoding': 'gzip,deflate,sdch',
  'accept-language': 'en-US,en;q=0.8',
  'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
  cookie: 'JSESSIONID=d1cbd411e30bcfb759e29585ee23' }

这个 GET 请求唯一做的就是调用那个 url(不带任何参数)

为什么bodyParser在这个 GET 请求上抛出错误有什么建议吗?

干杯

更新:我在这里找到了 bodyParser 的代码。在 json.js 中,它最终会抛出错误,因为它试图将空字符串(因为没有正文)转换为 json。我虽然 bodyParser 仅用于 POST 请求!

UPDATE1:发现问题:https ://github.com/documentcloud/backbone/pull/267我想我的 GET 请求中有一个内容类型

4

1 回答 1

1

看看B2MSolutions / gzip-bodyparser

于 2014-02-07T12:14:00.207 回答