0

我有一个关于 SSJS 的问题。

使用 SSJS,是否可以对用户隐藏代码?

其他服务器端语言(如 PHP)在源代码中不可见,因为它们是在客户端、浏览器之前处理的

我想要的一个小例子:

<html>
<head>
  <script runat="server">
    function getPassword(){
       var password = "myPass";
       return password;
    }
  </script>
</head>
<body>
  <script>
    alert(getPassword());
  </script>
</body>
</html>

我测试了这个,但密码仍然可见

我做错了什么,所以我的例子是简单的 CSJS 还是不可能隐藏 SSJS 代码?

4

3 回答 3

0

是的,您的服务器端代码可以对用户隐藏,就像任何其他服务器端语言一样。您必须通过理解服务器端 JavaScript 的服务器提供相关的 HTML 文件,并且您必须正确配置该服务器(默认情况下,.html文件可能不会被预处理;通常是带有服务器端代码的 HTML 文件将有不同的扩展名,例如.shtml, .asp,.aspx等,具体取决于您运行它们的平台;当然,通过适当的配置,您可以正确处理任何事情)。如果您能够通过网络浏览器看到上面的代码,那么您已经错过了其中一个步骤。

请注意,服务器端 JavaScript 将具有任何其他服务器端语言的优点和缺点。您不能(例如)使用任何服务器端语言为客户端浏览器编写任何脚本,这就是为什么您会看到如此多的客户端代码。(也许这很明显。:-))

于 2010-11-28T12:49:48.423 回答
0

任何服务器端 JavaScript 都只能在服务器上使用,但是就像您需要在将 PHP 发送到客户端之前通过 PHP 引擎运行 PHP 一样,您必须在发送之前通过 JS 引擎运行 SSJS。

您可以在 Wikipedia上找到此类引擎的列表,尽管node.js可能是目前最流行的。

runat="server"是,IIRC,一个 ASP.NET 构造。如果你想走这条路,你首先需要使用 ASP.NET。我不知道你的语法是否正确。

于 2010-11-28T12:51:46.100 回答
0

秉承 TJ Crowder 的明智之言,您的文件可以是基于 Windows 的主机上的经典 .asp 文件(即扩展名为 .asp 的文件),如下所示:

<% @language=ecmascript %>
<% 
    function getPassword(){
       var password = "myPass";
       return password;
    }
%>
<html>
<head>
</head>
<body>
  <script>
    alert('<%=getPassword()%>');
  </script>
</body>
</html>

或者更符合您的风格,它可能看起来像:

<script language="jscript" runat="server">
// mind the 'language' property, it is required. 
// The script tag doesn't have to be
// in the header of the html-document.
  function getPassword(){
     var password = "myPass";
     return password;
  }
</script>
<html>
<head>
</head>
<body>
  <script>
    alert('<%=getPassword()%>');
  </script>
</body>
</html>

服务器端脚本的两种方式都不会在页面源中可见。Aside:<%=...%>可以看作是的简写Response.Write(...)

对于其他主机,请检查您的提供商或 David Dorwards 答案中给出的维基百科列表

于 2010-11-28T13:15:54.853 回答