Может ли браузер обрабатывать одноразовый файл JS?

Я хочу скрыть источник JS от прямого доступа. Поэтому я подумал создать одноразовый файл JS. Я использую временный файл cookie сеанса. Файл cookie устанавливается перед включением JS-файла и после этого истекает.

а не сама идея, мой точный вопрос заключается в том, как браузер манипулирует файлом JS? Кеширует ли он копию JS-файла, как только мы пишем тег <script>, или тег скрипта является просто ссылкой, и браузер всегда должен иметь доступ к JS-файлу?

образец исходного кода asp:

<html>
  <body>
    <% response.cookies("tempJs")="yes"%>
    <script src="myscripts.asp"></script>
    <% response.cookies("tempJS")="no"%>
  </body>
</html>

Пример одноразового JavaScript (myscripts.asp):

<%
response.ContentType="text/javascript"
if request.cookies("tempJs")="yes" then
%>
    document.write ("Hello world");
<%
end if
%>

person Ali Sheikhpour    schedule 21.04.2018    source источник
comment
I want to hide the .source of JS from direct access. невозможно, даже если вы удалите тег script, из сети инструментов разработчика ваш код будет виден. Лучшее, что вы можете сделать, это уродовать свой js или иметь важную логику на стороне сервера.   -  person Keith    schedule 21.04.2018
comment
Поэтому я подумал создать одноразовый файл JS. Я использую временный файл cookie сеанса. Файл cookie устанавливается перед включением JS-файла и после этого истекает. - Что это значит?   -  person Parv Sharma    schedule 21.04.2018
comment
Пожалуйста, проверьте примеры кодов. У меня есть временный файл cookie перед тегом ‹script›, срок действия которого истекает сразу после этого тега. @ParvSharma   -  person Ali Sheikhpour    schedule 21.04.2018
comment
@AliSheikhpour Это невозможно. Файлы cookie отправляются перед телом документа, и вы не можете отправлять два разных значения для одного и того же файла cookie.   -  person Bergi    schedule 21.04.2018
comment
@AliSheikhpour Что вы можете сделать, так это файл cookie, срок действия которого истекает немедленно.   -  person Bergi    schedule 21.04.2018


Ответы (1)


Мой ответ не является ответом на вопрос, который вы задали, но, вероятно, все еще то, что вы ищете.

Вам необходимо понимать разницу между сценариями, выполняемыми на стороне сервера, и сценариями, выполняемыми на стороне клиента.
Javascript выполняется на стороне клиента, поэтому все, что написано между тегами <%%>, не имеет никакого эффекта, если js был передан в ответ.

Итак, что вы, по сути, делаете.

  • Установка переменной yes затем
  • Добавление тега <script></script> к вашему ответу, а затем
  • Установка переменной false.
  • После того, как этот ответ отправляется обратно, значение переменной по-прежнему равно no. Значение переменной отправляется обратно вместе с ответом в виде файла cookie.
  • Теперь браузер анализирует HTML.
  • Видит тег и запрашивает для myscripts.asp значение no set в файле cookie, который добавляется к запросу.
  • Сервер видит значение файла cookie как no и соответствующим образом отображает сценарий. В вашем случае нет строки document.write ("Hello world"); (Вероятно, это причина, по которой вы спрашиваете о проблемах с кэшированием. Она не кэшируется.)
person Parv Sharma    schedule 21.04.2018
comment
Спасибо. Я проголосовал за ваш ответ за полезные детали. Но, как вы сказали, главный вопрос касается самого браузера. Я понял, что моя идея не сработает, однако я могу задать вопрос еще раз с некоторыми другими идеями. Кроме того, вы уверены, что браузер вызывает внешние файлы после загрузки страницы? или вызывает их построчно и, наконец, представляет статический выходной файл? - person Ali Sheikhpour; 21.04.2018
comment
Независимо от того, как браузер делает это Построчно или после загрузки страницы, результат будет одинаковым, все, что находится внутри ‹%%›, даже не достигает браузера. - person Parv Sharma; 21.04.2018