Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTTP代理:拒绝半处理的请求_Javascript_Node.js_Http_Caching_Http Proxy - Fatal编程技术网

Javascript HTTP代理:拒绝半处理的请求

Javascript HTTP代理:拒绝半处理的请求,javascript,node.js,http,caching,http-proxy,Javascript,Node.js,Http,Caching,Http Proxy,我有一个基于Node.js的HTTP代理,它以流的方式动态转换响应体。例如,我的代理像nginx一样工作,它压缩(使用libz压缩)响应体 但我有一个悬而未决的问题:如果在数据交换过程中上游连接发生错误怎么办。当响应已经发送并且传输主体正在进行时,如何通知客户端en错误。由于源和转换数据不匹配,响应中缺少内容长度,因此客户端错误确定的复杂性 为了澄清一些细节,我添加了一段简单的代码: var express=require(“express”); var http=require(“http”)

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

但我有一个悬而未决的问题:如果在数据交换过程中上游连接发生错误怎么办。当响应已经发送并且传输主体正在进行时,如何通知客户端en错误。由于源和转换数据不匹配,响应中缺少
内容长度
,因此客户端错误确定的复杂性

为了澄清一些细节,我添加了一段简单的代码:
var express=require(“express”);
var http=require(“http”);
var url=require('url');
var webApp=express();
var httpServer=webApp.listen(8080,函数(){
log(“服务器启动于”,8080,“端口”);
});
webApp.get(“*”,函数(req,res){
var targetRequest=http.get(req.originalUrl,函数(上游响应){
if(上游响应状态代码!=200){
res.status(500).send(“内部服务器错误”);
返回;
}
upstreamResponse.on(“数据”,函数(块){
///转换块并将其发送到客户端
res.write(块);
});
上游响应打开(“结束”,函数(){
res.end();
});
///发生上游连接错误
上游响应打开(“错误”,函数(错误){
///如何正确通知客户
///关于错误????
/// ????
});
});

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

为什么不
res.status(500).send(error.message)?我错过了什么?@oshnaps不幸的是,最后的回应已经发出(在尸体之前)。例如,如果尝试使用错误处理程序中提供的构造,则会出现如下异常:
error:发送头后无法设置头。