Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以从网页运行节点脚本?_Javascript_Node.js_Apache - Fatal编程技术网

Javascript 是否可以从网页运行节点脚本?

Javascript 是否可以从网页运行节点脚本?,javascript,node.js,apache,Javascript,Node.js,Apache,我已经找了好几天了,但是找不到答案。 我想做以下工作: 用户连接到editor.html(带有基本http身份验证的Apache2) 用户希望使用其用户/pass(与passwd中相同)在服务器上打开文件(比如/home/user1/myfile.txt) Node.js脚本从上面获得具有用户权限的startet,用户可以编辑文件 节点脚本将通过WebSocket和读/写文件处理连接 我认为最大的问题是不可能从网页在服务器上运行节点脚本。。。我不想涉及任何php/cgi脚本。。。只有Apache

我已经找了好几天了,但是找不到答案。 我想做以下工作:

  • 用户连接到editor.html(带有基本http身份验证的Apache2)
  • 用户希望使用其用户/pass(与passwd中相同)在服务器上打开文件(比如/home/user1/myfile.txt)
  • Node.js脚本从上面获得具有用户权限的startet,用户可以编辑文件
  • 节点脚本将通过WebSocket和读/写文件处理连接

    我认为最大的问题是不可能从网页在服务器上运行节点脚本。。。我不想涉及任何php/cgi脚本。。。只有Apache和Node.js/js

    如果你知道这真的不可能,也请评论或回答

    谢谢

    柯达

    编辑:工作流应如下所示: 用户访问网页->输入其凭证(与passwd中相同)->node.js脚本以登录用户的用户权限启动->文件以用户权限读取或写入

    最大的问题:谁启动Node.js脚本?阿帕奇?如何使用?

    使用Socket.io-

    您还可以使用带有套接字IO的Express创建单独的应用程序服务器。-


    您可能想考虑允许用户直接使用其服务器端帐户连接的安全性含义。也有许多可用的应用程序已经完成,您可能会考虑实现,而不是编写自己的所有需要正确嵌入的安全性。

    让您的用户在没有任何身份验证的情况下获得静态Auth.HTML页面(通过Apache)。p> 让表单提交操作是一些auth.js(Node.js脚本)。此auth.js检查用户的身份验证是否成功。如果是这样,它将启动node.js服务器,在其上设置socket.io并将用户重定向到某个editor.html

    在本例中,您可以注意到,存在基于node.js脚本的身份验证。如果您想要基本apache2,我可以向您推荐下一个场景:

    服务器上有auth.html和editor.html页面。最后一个放置在
    /private
    文件夹中,对该文件夹的直接访问被.htaccess拒绝。因此,当用户在auth.html中通过apache2身份验证时,他会得到这个auth.html,它是一个空文档,带有
    onload
    事件处理程序,将AJAX发送到auth.js(Node.js脚本)。Node.js获取
    private/editor.html
    并像
    /editor.html
    一样将其发送给用户


    在这种情况下,用户只有通过身份验证才能访问编辑器。在身份验证node.js服务器启动,socket.io设置完毕后,一切正常。

    我不想成为这个人,但是

    这不是node的设计方式,它是为了使用事件循环而设计的,我建议让node为静态文件服务,可能使用apache作为代理,然后当有人请求某个页面时,做任何需要做的事情,如果确实必须生成子进程,请使用
    child\u process.spawn
    ,至于用户的权限,我建议只传入一个代码,比如1=admin、2=user、3=guest,子进程可以根据需要执行操作。

    我找到了一个解决方案:

    可以使用mod auth external为apache编写自定义身份验证程序:


    启用基本身份验证后,Web服务器会将凭据传递给脚本/程序,这样就可以运行节点应用程序。

    WebSockets(或普通AJAX)可以轻松做到这一点。查看Socket.io。让用户在服务器上启动任意进程是确保系统有后门的最佳方法。不要这样做,相反,请描述通过让您的用户这样做,您实际想要实现什么。apache可以代理nodejs。不要使用命令行脚本,而是使用http auth将nodejs程序编写为一个简单的web应用程序。@Mike'Pomax'Kamermans它应该在本地服务器上运行,我需要一个编辑器,这样用户就可以在服务器上编辑他们的文件,而无需ssh,只需浏览器。我只想使用apache和node.js。节点服务器不应在开始时运行。我想在用户登录时使用用户权限启动它。我知道有适用于Apache的suEXEC,但据我所知,默认情况下它无法运行节点脚本…不,他们正在编辑什么,以便能够在服务器上以脚本的形式运行这些内容?我的问题是,我不想在开始时运行节点服务器。我也不想在用户连接时以root和chroot身份运行节点服务器。用户应登录网页,然后查看编辑器。。。在服务器端,当用户登录时,Node.js服务器与登录的用户一起获得startet。这确保了用户只能编辑自己的文件。。。我只是不知道当用户登录时如何启动服务器,因为需要启动节点服务器……您能解释一下为什么一开始不想运行节点,或者为什么不能使用php吗。您可以通过创建一个具有用户名+id的文件夹,并在请求之前检查该用户是否已通过身份验证,并且正在尝试访问路径中包含该用户名和id+某些前缀的文件,来确保用户只能编辑其文件。ie用户“john_smith”只能访问:/homes/sites/private/john_smith_439/file.txt中的文件。所有用户都将首先通过数据库身份验证,然后您可以在那里创建/添加额外权限等。谢谢,我将在本周末对此进行评估并报告!pwauth()可以根据passwd进行身份验证。最后我根据自己的需要修改了源代码。。。