阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js 在VM中运行HTTP服务器

      Node.js 在VM中运行HTTP服务器

      在使用script.runInThisContext()或者vm.runInThisContext()时,目标代码是在当前的V8全局对象的上下文中执行的。被传入此虚拟机上下文的目标代码会有自己独立的作用域。

      要想用http模块搭建一个简易的服务器,被传入的代码必须要么自己执行require(‘http’),要么引用一个http,比如:

      'use strict';
      const vm = require('vm');
      
      const code = `
      ((require) => {
        const http = require('http');
      
        http.createServer((request, response) => {
          response.writeHead(200, { 'Content-Type': 'text/plain' });
          response.end('Hello World\\n');
        }).listen(8124);
      
        console.log('Server running at http://127.0.0.1:8124/');
      })`;
      
      vm.runInThisContext(code)(require);
      

      注意: 上述例子中的require()和导出它的上下文共享状态。这在运行未经认证的代码时可能会引入风险,比如在不理想的情况下修改上下文中的对象。


      更多内容请参考:Node.js vm,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录