gpt4 book ai didi

javascript - HTTP 代理 : Reject half-processed request

转载 作者:可可西里 更新时间:2023-11-01 16:41:34 26 4
gpt4 key购买 nike

我有基于 Node.js 的 HTTP 代理,它以流方式动态转换响应主体。例如,我的代理像 nginx 一样工作,它压缩(使用 libz 进行 gzip 压缩)响应主体。 Overall scheme:

但我有一个悬而未决的问题:如果在数据交换期间上游连接发生错误怎么办。当响应已经发送并且传输正文正在进行时,如何通知客户端有关错误。基于 Content-Length 由于源数据和转换后的数据不匹配而在响应中不存在的事实,在客户端确定错误的复杂性。

为了澄清一些细节,我添加了一段简单的代码:

var express     = require("express");
var http = require("http");
var url = require('url');


var webApp = express();

var httpServer = webApp.listen(8080, function () {
console.log("server started on ", 8080, " port");
});

webApp.get("*", function(req, res) {

var targetRequest = http.get(req.originalUrl, function (upstreamResponse) {

if (upstreamResponse.statusCode != 200) {
res.status(500).send("Internal Server Error");
return;
}

upstreamResponse.on("data", function (chunk) {
/// transform chunk and send it to the client
res.write(chunk);
});

upstreamResponse.on("end", function () {
res.end();
});

/// upstream connection error occured
upstreamResponse.on("error", function (error) {
/// How to properly notify client
/// about error ????
/// ????
});

});

});

最佳答案

实际上,通知客户端某些问题的唯一方法就是断开下游连接。

关于javascript - HTTP 代理 : Reject half-processed request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34270942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com