ServerSide JavaScript - PullRequest
       69

ServerSide JavaScript

0 голосов
/ 28 ноября 2010

У меня вопрос по SSJS.

Можно ли с помощью SSJS скрыть код от пользователя?

Другие языки ServerSide, такие как PHP, не доступны для просмотра в исходном коде, поскольку они обрабатываются перед клиентской стороной, браузером

Небольшой пример того, что я хочу:

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

Я проверял это, но пароль по-прежнему доступен для просмотра

Я что-то не так делаю, чтобы мой пример был простым CSJS или невозможно скрыть SSJS-код?

Ответы [ 3 ]

0 голосов
/ 28 ноября 2010

Любой серверный JavaScript будет доступен только на сервере, но, так как вам нужно запустить PHP через механизм PHP перед отправкой его клиенту, вы должны запустить SSJS через механизм JS перед его отправкой.

Вы можете найти список таких движков в Википедии, хотя node.js , вероятно, является самым популярным в настоящее время.

runat="server" - это IIRC, конструкция ASP.NET. Если вы хотите пойти по этому пути, для начала вам нужно будет использовать ASP.NET. Я не знаю, правильный ли у вас синтаксис.

0 голосов
/ 28 ноября 2010

Придерживаясь мудрых слов TJ Crowder, ваш файл может быть классическим .asp-файлом на хосте под управлением Windows (то есть файлом с расширением .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>

Оба сценария на стороне сервера не будут видны в исходном коде страницы.Кроме того: <%=...%> можно рассматривать как сокращение для Response.Write(...)

. Для других хостов, проверьте вашего провайдера или список википедии, приведенный в ответе Дэвида Дорвардса

0 голосов
/ 28 ноября 2010

Да, ваш серверный код может быть скрыт от пользователя, как и любой другой серверный язык. Вы должны предоставить соответствующий HTML-файл через сервер, который понимает серверный JavaScript, и вам необходимо правильно настроить этот сервер (по умолчанию .html файлы, вероятно, не будут предварительно обрабатываться; обычно HTML-файлы с сервером -сторонний код может иметь другое расширение, например .shtml, .asp, .aspx и т. д., в зависимости от платформы, на которой вы их запускаете, хотя, конечно, при правильной конфигурации вы можете правильно обрабатывать все, что угодно ). Если вы смогли увидеть приведенный выше код через веб-браузер, то вы пропустили один из этих шагов.

Обратите внимание, что серверный JavaScript будет иметь преимущества и недостатки любого другого серверного языка. Вы не можете (например) создавать скрипты браузера клиента на любом серверном языке, поэтому вы видите столько клиентского кода вокруг. (Возможно, это было очевидно. :-))

...