Запрос POST перенаправляется для ПОЛУЧЕНИЯ при отправке формы

#express #parse-platform

#экспресс #синтаксический анализ-платформа

Вопрос:

Я использую parse.com с их фреймворком expressjs. У меня есть эта html-форма, которая вызывает мой URL / login с помощью post, но по какой-то причине она перенаправляется (с кодом состояния 301) на запрос get на этот URL.

Это моя HTML-форма

 <html>
<head></head>
<body>
  <form method="post" action="/login">
    <label>Username</label>
    <input name="username"></input>
    <label>Password</label>
    <input name="password" type="password"></input>
    <input class="button" type="submit" value="Log In">
  </form>
</body>
  

Чтобы сделать вопрос более понятным, я использую express js с parse.com и вот два определенных маршрута

 app.get('/login', function(req, res) {
    res.send('get is called');
});

app.post('/login', function(req, res) {
    res.send('post is called');
});
  

Теперь независимо от того, что я предоставляю в своем методе формы, я всегда получаю «get вызывается» в браузере при отправке кнопки.

Я также попытался отладить то, что происходит в консоли разработчика, и это то, что я получаю

введите описание изображения здесь

Комментарии:

1. Я только что выполнил ваш пример, и браузер отображает «post вызывается». Возможно, проблема в другом месте вашего кода.

2. Вы перезапускали node после редактирования своих файлов?

3. это весь код, который у меня есть. Если вы видите скриншот, который я вставил, сообщение действительно вызывается. Он просто перенаправляется на GET с сервера. parse.com поддержите express js для выполнения всех этих операций.

4. @Nikita, я использую parse.com для серверной части. Я могу только повторно развернуть, а не перезапускать.

Ответ №1:

Я думаю, что вы используете шаблон ejs, попробуйте добавить все атрибуты в свою форму без двойных кавычек, что-то вроде этого и попробуйте

 <html>
<head></head> 
<body>
  <form method=post action=/login>
    <label>Username</label>
    <input name="username"></input>
    <label>Password</label>
    <input name="password" type="password"></input>
    <input class="button" type="submit" value="Log In">
  </form>
</body>
</html>
  

Я проверил в консоли, и атрибуты формы, когда были добавлены двойные кавычки, были чем-то в этом роде

 <form action=""/login"" method=""POST"">
  

таким образом, по умолчанию форма отправлялась как запрос GET вместо POST. Я все еще не уверен, почему это происходит, только начал изучать express, добавлю больше деталей, когда я их получу.