Node.js 使用Express呈现原始html作为响应

Node.js 使用Express呈现原始html作为响应,node.js,express,Node.js,Express,我想知道如何使用Express在响应中呈现原始HTML字符串 我的问题与其他问题不同,因为我没有试图呈现原始HTML模板;相反,我只想呈现一个原始HTML字符串 以下是我在路由文件中尝试的内容 router.get('/myRoute', function (req, res, next) { var someHTML = "<a href=\"foo\">bar</a>" res.end(someHTML); }); router.get('/myRoute'

我想知道如何使用Express在响应中呈现原始HTML字符串

我的问题与其他问题不同,因为我没有试图呈现原始HTML模板;相反,我只想呈现一个原始HTML字符串

以下是我在路由文件中尝试的内容

router.get('/myRoute', function (req, res, next) {
  var someHTML = "<a href=\"foo\">bar</a>"
  res.end(someHTML);
});
router.get('/myRoute',函数(req,res,next){
var someHTML=“”
res.end(someHTML);
});
但是当我把浏览器指向这个路径时,我看到的是一个超链接,而不是一个原始的HTML字符串。我尝试通过执行以下操作将内容类型设置为text:
res.setHeader('content-type','text')无效


有什么建议吗?

只需在其周围添加标签即可

someHTML = "<plaintext>" + someHTML + "</plaintext>";
someHTML=“”+someHTML+”;
请注意,纯文本被认为是过时的,这意味着浏览器供应商没有义务实施它们。但是,它仍然可以在主流浏览器上使用

另一种方法是

someHTML = someHTML.replace(/</g, '&lt;').replace(/>/g, '&gt;');
someHTML=someHTML.replace(//g',);

对于其他到达这里的人;这对我最有效:

res.set('Content-Type', 'text/html');
res.send(Buffer.from('<h2>Test String</h2>'));
res.set('Content-Type','text/html');
res.send(Buffer.from('teststring'));
编辑:


如果您的问题是转义某些字符,那么请尝试使用模板文本:

最好的方法是,假设您使用回调样式,声明var output=“”..,然后使用+=..将所需内容追加到输出var中。。。。如果是大字符串,请使用模板文本(
新行不重要${variables in here}
)。。。然后res.writeHead(200,{Content Type:text/html);res.end(output)

在发送html之前对html进行编码。有人为此做了一个要点:

在第二个解决方案中,
在浏览器上按字面意思打印,而不是作为相应的符号
。我如何继续?这是“第二个解决方案”是我一直以来最糟糕的反模式编码之一。本质上,它是一个可怜的html转义器,因为它只转义2个html符号。如果你发现自己这样做,你可能做错了。谢谢Brian!我最终得到了res.writeHead(200,{Content Type:text/html}”);res.end(output);您还可以使用
res.setHeader('Content-Type','text/html')
,这将在不需要
缓冲区的情况下正常工作