为什么会出现http header错误,漏洞在哪里?
Why does http header error show up and where is the flaw?
我试图获取 XML 并将其解析为 JSON。这里包含 2 个文件。
但我一直收到这个错误。我试着环顾四周,但仍然没有得到答案。
main.js
/** SET ENGINE TO PUG */
app.set("views", path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(express.static(path.join(__dirname, 'public')));
/** ROUTES */
app.get('/', (req, res) => {
res.render('index',{title: 'HOMEPAGE'});
})
app.get('/json_results', (req, res, next) => {
res.render('json_results', {title: 'NEWS TODAY', json_results_in:
getJson.produce_xml(url, function (err, data) {
if (err) {
return console.error(err);
}
res.json(JSON.stringify(data, null, 2));
})
});
});
get_json.js
var express = require('express');
var https = require('https');
/** PARSE XML TO JSON */
var parsedtext = require('xml2js').parseString;
function xmlToJson(url, callback) {
var req = https.get(url, function(res) {
var currentXml = '';
res.on('data', function(chunk) {
currentXml += chunk;
})
res.on('error', function(err) {
callback(err, null);
})
res.on('timeout', function(err) {
callback(err, null);
})
res.on('end', function() {
parsedtext(currentXml, function(err, result) {
callback(null, result);
})
})
});
}
module.exports.produce_xml = xmlToJson
我得到的错误是
code: 'ERR_HTTP_HEADERS_SENT'
请赐教。提前谢谢你。
res.render
向请求发送响应(在本例中是从 pug 生成的 HTML 文档)。
res.json
还发送响应(一些 JSON)到请求。
一个响应由 header 和通常的 body 组成。
一个请求只能有一个响应。
当您调用 res.json
时,您正在尝试发送一个新的响应,从 header 开始(因此是错误消息),到您已经响应的请求。
我试图获取 XML 并将其解析为 JSON。这里包含 2 个文件。 但我一直收到这个错误。我试着环顾四周,但仍然没有得到答案。
main.js
/** SET ENGINE TO PUG */
app.set("views", path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(express.static(path.join(__dirname, 'public')));
/** ROUTES */
app.get('/', (req, res) => {
res.render('index',{title: 'HOMEPAGE'});
})
app.get('/json_results', (req, res, next) => {
res.render('json_results', {title: 'NEWS TODAY', json_results_in:
getJson.produce_xml(url, function (err, data) {
if (err) {
return console.error(err);
}
res.json(JSON.stringify(data, null, 2));
})
});
});
get_json.js
var express = require('express');
var https = require('https');
/** PARSE XML TO JSON */
var parsedtext = require('xml2js').parseString;
function xmlToJson(url, callback) {
var req = https.get(url, function(res) {
var currentXml = '';
res.on('data', function(chunk) {
currentXml += chunk;
})
res.on('error', function(err) {
callback(err, null);
})
res.on('timeout', function(err) {
callback(err, null);
})
res.on('end', function() {
parsedtext(currentXml, function(err, result) {
callback(null, result);
})
})
});
}
module.exports.produce_xml = xmlToJson
我得到的错误是
code: 'ERR_HTTP_HEADERS_SENT'
请赐教。提前谢谢你。
res.render
向请求发送响应(在本例中是从 pug 生成的 HTML 文档)。
res.json
还发送响应(一些 JSON)到请求。
一个响应由 header 和通常的 body 组成。
一个请求只能有一个响应。
当您调用 res.json
时,您正在尝试发送一个新的响应,从 header 开始(因此是错误消息),到您已经响应的请求。