#javascript #html #apache
#javascript #HTML #apache
Вопрос:
Я пытаюсь создать часть своего веб-сайта, где он будет запрашивать у пользователя пароль в окне запроса, а затем разрешать доступ к скрытому содержимому, когда пароль правильный. Я хочу спрятать свой пароль где-нибудь на моем сервере apache2; где-нибудь, чтобы я не мог просто перейти к файлу javascript, содержащему пароль в строке URL, например [mywebsite]/password.js. Я пытался делать
SetEnv PASSWORD password123
например, в файле конфигурации моего веб-сайта, затем в моем файле javascript, связанном с моим HTML-файлом, я написал следующий код:
function check() {
var password = process.env.PASSWORD;
var str = prompt("Enter the correct password to continue: ");
if (str != password) {
check();
}
document.getElementById("visible").style.visibility = "visible";
}
Однако, когда я загружаю веб-сайт, он загружается, но содержимое по-прежнему скрыто. Как я могу скрыть пароль на моем сервере, чтобы я мог напрямую обращаться к нему в моем файле javascript? Может быть, есть лучший способ сделать это? Я должен отметить, что все работало правильно, прежде чем пытаться скрыть пароль.
Комментарии:
1. Вы должны подтвердить пароль на сервере с помощью ajax 🙂
2. Вы спрашиваете, как использовать X для достижения Y, но X не является подходящим инструментом для этого. Что вам нужно, так это надлежащий сервер. Я рекомендую начать с PHP ( xampp ) (чтобы устранить путаницу [или добавить к ней],
process
существует только в серверном JavaScript, а не в среде браузера)3. Как сказал @RohitSharma, вы должны подтвердить пароль на сервере с помощью AJAX. Смотрите, JS запущен в браузере, который отличается от среды сервера!
Ответ №1:
Во-первых, process.env недоступен из контекста браузера. process.env — это переменная nodejs. Он будет существовать только в среде, подобной nodejs. javascript в браузере не запускает nodejs.
Самое простое решение — запретить доступ к странице напрямую с помощью apache:
Вам нужно будет сгенерировать файл .htpasswd.
В вашей конфигурации apache вы бы добавили что-то вроде этого:
<Directory "/path/to/password/protected/folder">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /path/to/htpasswd
Require valid-user
</Directory>
Вот полное руководство по настройке папки, защищенной паролем, в apache:
Комментарии:
1. Это как раз то, что мне было нужно. Спасибо!