Я работаю с Node.js и выражаю свою основную структуру.form submit vs separate XMLHttpRequest
У меня есть веб-страница входа в систему со следующим кодом.
<script>
function sendResponse(){
var data = new FormData();
var login = document.getElementById("login").value;
var password = document.getElementById("password").value;
data.append('login', login);
data.append('password', password);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://myURL/login', true);
xhr.onload = function() {
// do something to response
var result = JSON.parse(this.responseText);
if(result["result"] == "fail"){
alert("No Account Found. Please Register First.");
window.location.replace("http://myURL/register");
}
else{
window.location.replace("http://myURL/mainpage");
}
};
xhr.send(data);
}
</script>
<h1>Login Portal</h1>
<hr />
<form method="post">
<table>
<tr>
<td><label>Username or Email:</label></td>
<td><input id="login" type="text" name="login" /></td>
</tr>
<tr>
<td><label>Password:</label></td>
<td><input id="password" type="password" name="password" /></td>
</tr>
</table>
<button type="button" onclick="sendResponse()">Login</button>
</form>
Node.js не может посылать два ответа для одного запроса.
html не отправляется обычным запросом FORM-SUBMIT, а имеет отдельную функцию javascript, которая создает новый экземпляр httprequest и собирает информацию из формы и отправляет ее на сервер, получает ответ и выполняет дальнейшие действия с там (для регистрации или главной страницы).
Что мой друг хочет сделать, это сделать обычный тип FORM-SUBMIT с действием, предназначенным для URL-адреса входа, и поскольку я могу только отправить один ответ, я бы послал перенаправление и взял управление маршрутом, обработки. Но тогда, поскольку у клиента не будет других данных-членов, например, прежде чем он отправит другой запрос через отдельный маршрут, чтобы получить данные зарегистрированного члена, такие как сеанс и ключ участника.
Когда я смотрю на многие известные веб-сайты, html-код реализует то, что мой друг описал, и он хочет сделать веб-сайт стандартными процедурами. Он считает, что мой способ обработки запросов с помощью триггера onclick является обходным путем. Я понял, и я не знаком с веб-разработкой, я отвечаю за сервер. Но не делает ли это нагрузкой x2? Я имею в виду, если клиентская сторона может обрабатывать действия после того, как она получает данные, разве это не обходной путь, а обычный способ обработки запросов?
но мой метод позже делает сайт неэффективным или менее безопасным? событие submit не может обрабатывать post action; он только отправляет данные на сервер и получает перенаправление. Ему нужно будет получить данные о членах так или иначе. – user3467433
Вы можете обрабатывать POST-файлы AJAX с отправкой событий. Вы действительно можете что-либо сделать в обработчике событий отправки. Это не сделает его менее безопасным, чем любое взаимодействие между клиентом и сервером. – lxe