Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可以强制浏览器缓存HTML页面吗?_Javascript_Html_Web_Caching - Fatal编程技术网

Javascript 可以强制浏览器缓存HTML页面吗?

Javascript 可以强制浏览器缓存HTML页面吗?,javascript,html,web,caching,Javascript,Html,Web,Caching,我要结婚了,我没有打印结婚请柬,而是制作了一个网页。我的一个朋友在他的web服务器上创建了一个子文件夹(/var/www/web/myname),我通过SSH上传了我的文件(HTML、CSS、JS) 这一点很重要:我只能访问该文件夹,因此我不能使用任何数据库和进行任何服务器端修改!我唯一的工具集是HTML指令和客户端JS 因为它是公开的,任何人都能看到,但我不想看到。这就是为什么我加密了我页面的HTML代码,并创建了一个登录页面。输入有效密码(其散列存储在JS源文件中)后,JS脚本使用密码作为密

我要结婚了,我没有打印结婚请柬,而是制作了一个网页。我的一个朋友在他的web服务器上创建了一个子文件夹(
/var/www/web/myname
),我通过SSH上传了我的文件(HTML、CSS、JS)

这一点很重要:我只能访问该文件夹,因此我不能使用任何数据库和进行任何服务器端修改!我唯一的工具集是HTML指令和客户端JS

因为它是公开的,任何人都能看到,但我不想看到。这就是为什么我加密了我页面的HTML代码,并创建了一个登录页面。输入有效密码(其散列存储在JS源文件中)后,JS脚本使用密码作为密钥解密AES加密字符串(也存储在JS源文件中),并通过调用
document.open()
document.write()
,将实际页面更改为现在解密的HTML代码,和
document.close()

有没有办法强制浏览器缓存实际的HTML代码,以避免每次打开页面时重新键入密码

你们中的一些人请求了JS“登录”代码:


我知道这是一件愚蠢的事情,请不要评判我。:)

例如,有几种方法可以缓存页面、缓存控制头或服务工作者。也就是说,缓存页面以进行身份验证通常不是正确的方法。相反,您可能希望保存某种身份验证令牌(JWT、会话cookie等),以便进行进一步的重新身份验证

//使用密码进行身份验证后
document.cookie='someKey=someValue'
//归还
函数getCookie(名称){
常量cookies=document.cookie.split(“;”)
返回(cookies.reduce)(t,c)=>{
常量项=c.split('='))
t[条目[0]]=条目[1]
返回t
},{})[姓名]
}
如果(getCookie('someKey')=='someValue'){
//认证
}

请发布JavaScript的相关代码片段。您可以使用cookie或localStorage在本地存储密码。有更好的/标准的方法登录/验证用户,而无需加密密码code@LawrenceCherone我知道,但我无法访问web服务器本身(数据库等),因此,我只能使用静态HTML页面。什么是阻止某人通过开发工具简单地添加,对if语句执行true,然后在decrypt中将
password
替换为
hashString.toLowerCase()
。。只是saying@prodx这里的安全性可以很容易地绕过,如果您的需求非常基本,我建议您保持简单,使用
cookie
保存/标记您需要的内容,而此链接可能会回答问题,最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-
var hashString = "sha256_hash_of_the_password"; 
var indexPage = "aes_enrypted_string_of_base64_coded_html"; // The original one is quite long...

document.getElementById("password-box").addEventListener("keyup", function(event) {
    event.preventDefault();
    document.getElementById("password-box").classList.remove("pw-bad");
    if (event.keyCode === 13) {
        document.getElementById("login-button").click();
    }
});

function buttonListener()
{
    var password = document.getElementById("password-box").value;
    if(password !== "") {
        if(CryptoJS.SHA256(password) == hashString.toLowerCase()) {
            var indexDecrypt = CryptoJS.AES.decrypt(indexPage, password).toString(CryptoJS.enc.Utf8);
            var parsedWordArray = CryptoJS.enc.Base64.parse(indexDecrypt);
            var parsedStr = parsedWordArray.toString(CryptoJS.enc.Utf8);

            document.open('text/html');
            document.write(parsedStr);
            document.close();
            return;
        }
        document.getElementById("password-box").value = "";
        document.getElementById("password-box").classList.add("pw-bad");
    }
    document.getElementById("password-box").focus();  
}