无法发布/来自非“/”站点的发布请求

时间:2021-05-08 15:30:59

标签: html node.js http web post

我是 Node 的新手,在使用 POST 功能时遇到了问题。 我有一个简单的网站,其中有以下几行:

app.get('/sign',(req,res)=>{
    res.sendFile(path.join(__dirname, 'static', 'index.html'));
});

app.post('/sign', (req,res)=>{
    res.send("Success!")
});

get 请求工作正常,但是当我在表单中发回数据时,我得到的不是成功消息,而是 Cannot POST /。 当使用 app.get('/', etc.) 从“/”目录执行相同操作时 它工作正常。

这是'index.html'文件的内容:

<form action = '/' method='POST' id="form">
    <div class="form-group">
        <label for="emal">Email address</label>
        <input type="email" class="form-control" name="email">
    </div>
    <div class="form-group">
        <label for="pwd">Password</label>
        <input type="password" class="form-control" name="password">
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
</form>

1 个答案:

答案 0 :(得分:3)

action 属性指定表单数据将被发布到的 URL。

您说过要将其发布到 /

您的服务器端代码为 /sign 提供路由,但不为 / 提供路由。

您需要匹配您的网址。要么将 action="/" 更改为 action="/sign" 以明确您将其发布到的位置,或者完全删除 action 属性,以便它发布到当前网址(它是 /sign,因为这是提供包含表单的 HTML 文档的 GET 处理程序的路由)。