gpt4 book ai didi

Node.js http get 请求错误事件未获取 404 或 403

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:58 24 4
gpt4 key购买 nike

我正在为图像发出 HTTP GET 请求。有时图像以 404 或 403 返回。令我惊讶的是我必须明确检查它而不是在错误事件中拾取它。它是这样工作的还是我在这里遗漏了什么?

function processRequest(req, res, next, url) {
var httpOptions = {
hostname: host,
path: url,
port: port,
method: 'GET'
};

var reqGet = http.request(httpOptions, function (response) {
var statusCode = response.statusCode;

// Many images come back as 404/403 so check explicitly
if (statusCode === 404 || statusCode === 403) {
// Send default image if error
var file = 'img/user.png';
fs.stat(file, function (err, stat) {
var img = fs.readFileSync(file);
res.contentType = 'image/png';
res.contentLength = stat.size;
res.end(img, 'binary');
});

} else {
var idx = 0;
var len = parseInt(response.header("Content-Length"));
var body = new Buffer(len);

response.setEncoding('binary');

response.on('data', function (chunk) {
body.write(chunk, idx, "binary");
idx += chunk.length;
});

response.on('end', function () {
res.contentType = 'image/jpg';
res.send(body);
});

}
});

reqGet.on('error', function (e) {
// Send default image if error
var file = 'img/user.png';
fs.stat(file, function (err, stat) {
var img = fs.readFileSync(file);
res.contentType = 'image/png';
res.contentLength = stat.size;
res.end(img, 'binary');
});
});

reqGet.end();

return next();
}

最佳答案

Is that how it works?

是的。 http.get()http.request() 不会广泛判断响应的内容。他们主要验证是否收到了响应,并且响应的格式是否有效以供解析。

这将取决于您的应用程序是否执行除此之外的任何验证,包括测试状态代码。

关于Node.js http get 请求错误事件未获取 404 或 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15915352/

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