我当前正在将新的GET端点添加到现有节点(v8.11.2 )+ Restify(^ 7.6.0)服务,目的是根据查询参数生成自定义SVG。
到目前为止,我已经通过将端点发送回作为响应来返回端点在浏览器中返回svg文本:
res.send('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="400" height="180"> <rect x="50" y="20" rx="20" ry="20" width="150" height="150" style="fill:red;stroke: black;stroke-width:5;opacity:0.5" /> </svg> ');
所以我认为这是一个内容类型的问题,并且都尝试了
res.header('Content-Type', 'image/svg');
和
res.header('Content-Type', 'image/svg+xml');
使用svg内容调用res.send
之前,但是浏览器尝试下载图像而不是渲染图像。
我也尝试过以URL作为图像src的准系统html页面,如下所示:
<html>
<head></head>
<body>
<img src="http://localhost:8080/marker/svg" alt="">
</body>
</html>
这是一台精简的裸机服务器,仍在复制相同的问题:
var restify = require('restify');
function respond(req, res, next) {
res.header('Content-Type', 'image/svg+xml');
res.send('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="400" height="180"> <rect x="50" y="20" rx="20" ry="20" width="150" height="150" style="fill:red;stroke: black;stroke-width:5;opacity:0.5" /> </svg> ');
}
var server = restify.createServer();
server.get('/', respond);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});
我希望能够在浏览器中直接访问localhost:8080 / api / svg并查看svg,就像我直接打开/提供svg文件一样。预先谢谢你!
答案 0 :(得分:1)
使用sendRaw()而不是send()。 send()过滤您的数据内容。