我想知道如何使用Express在响应中呈现原始HTML字符串。
我的问题与其他问题不同,因为我不是要渲染原始HTML模板;相反,我只想渲染一个原始的HTML字符串。
以下是我在路线档案中尝试的内容。
router.get('/myRoute', function (req, res, next) {
var someHTML = "<a href=\"foo\">bar</a>"
res.end(someHTML);
});
但是当我将浏览器指向此路径时,我看到的是超链接,而不是原始的HTML字符串。我试图通过执行以下操作将内容类型设置为文本:res.setHeader('Content-Type', 'text');
但无效。
有什么建议吗?
答案 0 :(得分:12)
来到这里的其他人;这对我来说效果最好:
res.set('Content-Type', 'text/html');
res.send(new Buffer('<h2>Test String</h2>'));
编辑:
如果您的问题是逃避某些字符,请尝试使用模板文字:Template literals
答案 1 :(得分:0)
只需在其周围添加标签
someHTML = "<plaintext>" + someHTML + "</plaintext>";
请注意,明文被认为是过时的,这意味着浏览器供应商没有义务实施它们。但是,它仍适用于主流浏览器。
另一种方法是
someHTML = someHTML.replace(/</g, '<').replace(/>/g, '>');
答案 2 :(得分:0)
执行此操作的最佳方法是,假设您使用回调样式,声明var output =&#34;&#34; ....然后将输出var所需的内容附加到+ = ....如果它是一个大字符串,则使用模板文字(new line doesn't matter ${variables in here}
)...然后res.writeHead(200,{Content-Type:text / html); res.end(输出)
答案 3 :(得分:0)
在发送前对HTML进行编码。有人为此做了一个要点:https://gist.github.com/mikedeboer/1aa7cd2bbcb8e0abc16a