用于nonUTF编码的POST请求的流星路由

时间:2017-02-19 14:01:53

标签: post meteor iron-router body-parser

我正在为商家系统实施REST API。此商家系统向我的系统发送付款确认POST请求到指定的URL,此请求在windows-1251中编码。

我已尝试使用iron-router和restivus来处理此请求,但两者都失败并出现错误

UnsupportedMediaTypeError: unsupported charset "WINDOWS-1251"
at Object.urlencodedParser [as handle] (/home/dev/builds/bundle/programs/server/npm/node_modules/meteor/simple_json-routes/node_modules/connect/node_modules/body-parser/lib/types/urlencoded.js:102:12)
at next (/home/dev/builds/bundle/programs/server/npm/node_modules/meteor/webapp/node_modules/connect/lib/proto.js:174:15)
at middleware (packages/oauth.js:107:7)
at packages/oauth.js:96:5

我目前的铁路由器代码:

Router.route('/api/payments/result/',{where: "server", name: 'payments-result'})
    .post(function () { });

Router.onBeforeAction(function (req, res, next) {
    logger.info('GOT A CONFIRMATION REQUEST');
    logger.info(`request headers are: ${req.rawHeaders}`);
    logger.info('request is: ');
    Object.keys(req.body).forEach(key => {
        let val = req.body[key];
        logger.info(`${key} : ${val}`);
    });

    res.end('hello from the server\n');
},{where: 'server', only: ['payments-result']});

即使在onBeforeAction挂钩期间也没有执行任何日志语句。

问题是如何设置正确的请求解码或避免只接受utf-8编码请求的正文解析器,我已经发现了。

更新 Ad hock解决方案是使用nginx将win-1251转换为utf8

1 个答案:

答案 0 :(得分:0)

Ad hock解决方案是使用nginx将win-1251转换为utf8。

相关问题