Есть форма и ajax-запрос, который в формате POST отправляет данные формы на сервер:
<div class="auth-form">
<input type="text" name="login" placeholder="login" id="login">
<input type="password" name="password" placeholder="password" id="password">
<button id="submitBtn">Send</button>
</div>
<script type="text/javascript">
const submitBtnElem = document.getElementById('submitBtn');
if(submitBtnElem) {
submitBtnElem.addEventListener('click', auth);
}
function auth() {
const login = document.getElementById('login').value;
const password = document.getElementById('password').value;
const xhr = new XMLHttpRequest();
xhr.open("POST", "auth_request", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (this.readyState != 4) return;
console.log( this.responseText );
}
xhr.send(`login=${login}&password=${password}`);
}
</script>
После того как пользователь заполняет форму и кликает кнопку Send, запрос уходит на сервер. Но не выполняется на сервере:
Почему не выполняется это меня не очень беспокоит, меня беспокоит в первую очередь присутствие в адресной строке GET-параметров:
http://127.0.0.1:5000/?login=&password=
Помогите пожалуйста понять причину их появления. Ведь в ajax-запросе я указал метод POST и заголовок:
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
При этом контролер моего фреймворка принимает только POST:
@app.route('/auth_request', methods=['POST'])
def auth_request():
.......