我希望允許我的站點(我的同事)的用戶在Node.js服務器上創建和運行任意函數。該功能可以上傳到服務器,在那裏存儲它,當某人訪問該服務器上的URL時,它應該執行該功能。該功能無需在沙箱中檢查或執行,代碼應視爲可信。我怎樣才能實現這樣的事情?我知道這是非常接近FaaS,但我不認爲這是相同的......我還需要在服務器上請求運行一些預處理等在Node.js服務器中創建和運行動態功能
0
A
回答
1
如果你真正瞭解的一切後果,您可以使用表格eval
函數在服務器上運行以文本/字符串形式存儲的代碼。
請看這裏 - https://nodejs.org/api/vm.html,例如,像指定的有:
實施例:一個VM
內運行的HTTP服務器當使用任一script.runInThisContext()
或vm.runInThisContext()
,代碼的當前全球V8上下文中執行。傳遞給此VM上下文的代碼將具有其自己的隔離範圍。
爲了使用http模塊運行簡單的Web服務器,傳遞給上下文的代碼必須自己調用require('http')
,或者引用傳遞給它的http模塊。例如:
'use strict';
const vm = require('vm');
const code = `
(function(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()
股與它從傳遞的上下文的狀態。這可能會在不可信代碼執行時帶來風險,例如以不需要的方式改變上下文中的對象。
相關問題
- 1. node.js服務器未運行
- 2. 在node.js服務器(EdgeJS)中創建服務器並引用API
- 3. 在動態創建的內容上運行jQuery功能
- 4. Sql服務器功能運行緩慢
- 5. 動態創建Web服務動態Web服務調用器
- 6. 在觀看功能之前運行服務器功能
- 7. 在Linux CentOs上運行node.js服務器
- 8. 如何在Express服務器啓動時運行某個功能?
- 9. Laravel動態創建功能
- 10. 在SQL服務器中動態構建和執行語句
- 11. 我正在創建靜態node.js服務器
- 12. 服務器控件動態創建CustomValidator
- 13. 運行服務自動進入創建
- 14. Nodejs服務器創建未運行
- 15. 動態複選框創建運行功能onclick
- 16. 在Eclipse中隱藏「在服務器上運行」功能
- 17. 創建動態WCF服務?
- 18. 使用動態IP在服務器上運行java服務
- 19. 只能從機器運行服務器訪問Express Node.js服務器
- 20. 使用Node.js創建HTTPS服務器
- 21. 使用Node.js創建DDP服務器
- 22. Node.JS在REST服務中運行Sandbox
- 23. 從Geany運行node.js服務器
- 24. 'node.js':是否需要運行服務器?
- 25. 如何運行node.js服務器
- 26. 如何設置服務器運行Node.js?
- 27. 如何在運行Apache的DreamHost VPS上使用Node.js創建HTTP服務器?
- 28. Node.js - 在運行時動態更改HTTPS服務器的SSL證書
- 29. 無法創建運行在C#中的功能的計時器
- 30. 如何創建通過Firebase雲端功能託管的Node.js代理服務器?
感謝VM模塊(我完全錯過了!)和代碼示例! –