【发布时间】:2014-06-04 10:26:23
【问题描述】:
我有一个 node.js 网站,我在查询字符串中传递了 javascript。
然后我在请求处理程序中评估 javascript。 (不安全,我知道。)
// web.js
var express = require("express");
var logfmt = require("logfmt");
var app = express();
app.use(logfmt.requestLogger());
app.get('/', function(req, res) {
var code = req.query.code;
var result = eval("(function(req, res) {" + code + "})(req, res);");
res.send('Result: ' + result);
});
var port = process.env.PORT || 5000;
app.listen(port, function() {
console.log("Listening on " + port);
});
我希望能够将 coffeescript 传递到查询字符串中并对其进行评估,但是我不想更改 node.js 代码根本 .因此,我需要在咖啡脚本周围包装一些东西,以便在评估时将其转换为 javascript,编译和执行生成的 javascript完全在 eval 内。
这可能吗?
澄清:我根本不希望coffeescript 编译器的源代码存在于我的Web 服务器的磁盘上。 (例如 extras/coffee-script.js)我想将 coffeescript 编译器的源代码传递给 eval 块到,所以编译本身是在没有任何依赖关系的情况下完成的。然后我想执行生成的 javascript。
coffeescript 编译器可能不适合查询参数,因此从概念上讲,它可以通过 POST 正文或其他方式传递。
【问题讨论】:
标签: javascript coffeescript eval