ошибка 500 fetch
Здравствуйте, возникла проблема. Я написал форму регистрации, которая успешно работает, после чего написал js файл, который обращается к серверу через fetch GET методом и всё ок. Но когда я сделал форму логина и повторил всё уже с методом POST, то сервер выдаёт ошибку 500, причём сама форма логина работает, однако если подключить js файл с fetch то случается error. Есть идеи с чем это может быть связано?
форма логина
<!DOCTYPE HTML>
<html>
<head>
<title>Login</title>
</head>
<body>
<form method="POST" action="https://test-publicapi.maximarkets.org/Account/logon">
<p>
<label>Login<br>
<input name="email" type="email" size="40" id="log">
</label>
</p>
<p>
<label>Password<br>
<input name="password" type="password" size="40" id="pass">
</label>
</p>
<p>
<button type="submit">Вход</button>
</p>
</form>
<script src="scriptforlog.js"></script>
</body>
</html>
Вот js файл
async function onFormSubmit(evt) {
evt.preventDefault();
let email = document.getElementById('log').value;
let password = document.getElementById('pass').value;
let skip2Fa = true;
let data = new FormData();
data.append('email',email);
data.append('password',password);
data.append('skip2Fa',skip2Fa);
const response = await fetch(`https://test-publicapi.maximarkets.org/Account/logon`, {
method: "POST", body: data
});
if(response.ok) {
alert('ok');
} else {
alert('wrong');
};
}
const form = document.querySelector('form');
form.addEventListener('submit' , onFormSubmit);
|
Цитата:
А класс FormData в конечном счёте представляет данные при отправке в виде типа multipart/form-data, а вам нужен application/x-www-form-urlencoded. Можно перевести из одного формата в другой, а можно сразу правильный. Например, замените (строка №8) FormData на URLSearchParams. |
Спасибо, я уже понял что проблема была в формате данных, однако я решил проблему таким способом(добавил headers)
function onFormSubmit(evt) {
evt.preventDefault();
let mail = document.getElementById('log').value;
let pass = document.getElementById('pass').value;
fetch('https://test-publicapi.maximarkets.org/Account/logon', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: mail,
password: pass,
})
});
}
const form = document.querySelector('form');
form.addEventListener('submit' , onFormSubmit);
|
Цитата:
|
Цитата:
Т. к. передача файлов не нужна в данном случае, то наверно следует отдавать предпочтение менее многословному формату! Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Слушай, гений ты наш, ты практически ответил на возможную причину ошибки тем, что вместо application/x-www-form-urlencoded отдается тип multipart/form-data, что является просто бредом. Все дальнейшие твои рассказы, это пересказ документации, которую я и без тебя знаю.
И хотя бы поинтересовался каковы причины могут порождать статус 500, и корректно ли будет бездумно при этом выплевывать его клиенту, пусть мается в догадках. А то гонишь пургу, баз какой-то беспредметный. |
Цитата:
Цитата:
{
"errorType": 1,
"statusCode": 500,
"message": "Processing of the HTTP request resulted in an exception. Please see the HTTP response returned by the 'Response' property of this exception for details.",
"messageDetail": null,
"validationErrors": null,
"padString": null
}
Цитата:
|
Цитата:
Ты же начал совсем с иного, что вообще никоим образом не могло быть источником проблемы. Все остальное, это ради поболтать. PS. Кстати, отвечать клиенту статусом 404 на ошибку несоответствия типу, это вообще из рук вон. |
| Часовой пояс GMT +3, время: 09:39. |