koa2做请求转发

最近用koa2做请求转发时,采用了request(options).pipe(ctx.res)的方法,结果出现了有时候前端获得的数据是分片的。

后来翻阅文档,采取了如下方式解决:

        const PassThrough = require('stream').PassThrough;
        ctx.body = request(options)
            .on('response', response => {
                Object.keys(response.headers).forEach((key) => {
                    // if ('content-length' === key) return;
                    if ('transfer-encoding' === key) return;
                    ctx.set(key, response.headers[key]);
                });
            })
            .on('error', ctx.onerror)
            .pipe(PassThrough())

参考文档:

https://koa.bootcss.com/

https://github.com/koajs/koa/pull/612 

 

可是这样的解决方案我觉得并不好,header还要设置。

原生的stream.pipe(res)貌似就没有这样的问题。 继续寻求更好的解决方案

 

转载于:https://www.cnblogs.com/showtime813/p/11091418.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值