繁体   English   中英

使用Javascript读取环境变量

[英]Reading environment variables with Javascript

我需要从客户端操作系统上的环境变量中读取系统时间。 我在Stackoverflow上搜索,发现这是不可能的。 然而,这些答案来自2010年,我想问一下自那以后是否有任何改变。

是否可以使用某种框架? 或Javascript仍然是沙盒并从操作系统切断?

szpic ,如果Javascript没有来自操作系统的沙盒,那么任何半szpic犯罪分子都可以进入你的计算机并控制住。 允许环境变量的程度太低,不允许。

看看你所有的环境变量,并问问自己这个星球上的每个人是否都应该能够访问有关你计算机的所有数据。


如果您想使用Javascript执行此操作,则必须使用特殊的Web浏览器,例如node-webkit 但是,它不会在任何普通的Web浏览器上运行,所以不要指望超过0.0001%的人口期望运行您的页面。


我不知道你的预期用途,但抛出环境变量的一个技巧是创建一个Web应用程序的快捷方式,并将其作为URL参数包含在那里(至少在Winblows上)。

http://myapp.com?computername=%COMPUTERNAME%

javascript Date()对象提供客户端系统时间。

FWIW ....只是玩一个.HTA文件(是的,使用MSIE'引擎',所以你可能会忘记其他浏览器) ,以下JavaScript读取%TEMP%路径变量来安全地设置文件路径+名称写一个临时文件。 这对我来说没问题:

var oTest = new ActiveXObject("wscript.shell");
pathTest = oTest.ExpandEnvironmentStrings("%TEMP%") + "\\test_it.txt";
oTest = null;
alert(pathTest);  // proves we can read %TEMP%

// and create the file, to complete the example
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var fil = oFSO.CreateTextFile(pathTest, true);
fil.WriteLine("Hello wonderful world!");
fil.Close();

只有一种方法可以做到这一点 - 使用特殊的Web浏览器。 node-webkit这样的东西。 它将webkit引擎与node.js集成在一起,因此您可以将它与DOM一起使用。

document.write(require('os').type());

但正如其他人所说 - 没有机会用“普通”的网络浏览器来做。

这可以使用VBScript,但在IE11中删除了支持。 如果您在IE环境(例如内部Intranet)中,则可以将VB代码(CreateObject(“wscript.shell”))转换为使用ActiveX。 这将解决您在IE11边缘模式下弃用VB脚本的问题,并允许您的页面访问您的环境变量并在边缘模式下使用。 显然这只是IE浏览器,但如果您使用的是VBScript,那么它也只是IE浏览器。

var ax = new ActiveXObject("wscript.shell");
uname = ax.ExpandEnvironmentStrings("%USERNAME%");
av = null;
alert(uname);

今天(在撰写本文时)所有的答案都已过时了。 :)

当然,JS仍然是沙箱,但这并不妨碍任何人在客户端软件中使用类似环境变量的东西。 您需要明智地了解和使用的是将任何类型的数据从操作系统传输到前端应用程序。

几个前端框架可能会有所帮助。 例如,使用@ angular / cli创建的Angular应用程序为开箱即用的不同环境提供了用例。 在应用程序配置文件(例如angular.json)中,您可以配置选项,变量,值,以及通过Webpack传输到前端应用程序所需的任何内容 它们只能被读取一次,并且不能在运行时更改。

以下库nwjs.io尝试新的东西:它允许您直接从DOM调用所有Node.js模块。

在停靠/ docker环境中,对后端和前端软件还有其他期望,并且这些环境的配置不同,并且从操作系统的角度进行了适当的约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM