ошибка 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, время: 17:11. |