-1

我想从直接访问中隐藏 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
%>
4

1 回答 1

1

我的答案不是您所问问题的答案,但可能仍然是您正在寻找的答案。

您需要了解在服务器端执行的脚本和在客户端执行的脚本之间的区别。
Javascript 在客户端执行,因此在<%%>标签之间写入的任何内容都没有效果,js 已作为响应给出。

所以你基本上在做的是。

  • yes然后设置一个变量
  • <script></script>标签添加到您的响应中,然后
  • 将变量设置为假。
  • 在这个响应被发回之后,变量的值仍然是no. 变量的值作为 Cookie 与响应一起发回。
  • 现在浏览器解析 HTML。
  • myscripts.asp在添加到请求的 cookie 中查看未设置值的标记和请求。
  • 服务器将 cookie 的值视为no并相应地呈现脚本。你的情况是没有这条线document.write ("Hello world");(这可能是你询问缓存问题的原因。它没有被缓存。)
于 2018-04-21T12:43:29.667 回答