POST请求被重定向到表单提交上的GET

时间:2014-07-03 16:38:31

标签: express parse-platform

我使用parse.com和他们的expressjs框架。 我有这个html表单,它使用post调用我的/ login url但由于某种原因它被重定向(状态码为301)到该URL的get请求。

这是我的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>

为了使问题更清楚,我使用快递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 be called”。

我还尝试调试开发人员控制台发生的事情,这就是我得到的

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为您正在使用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提交的。我仍然不确定为什么会这样,只是开始学习快递,当我得到它们时会添加更多细节。