简单的POST请求就像GET请求一样工作并超时

时间:2019-07-31 15:38:39

标签: node.js express forms http-post

我创建了一个简单的POST请求表单来提交电子邮件,但是每次运行它时,它就像是失败的GET请求。

我尝试在邮递员中对其进行测试,但收到一条消息,提示“无法获得任何响应”。该表单非常基础,但是我在网上找不到任何描述我的问题和解决方案的信息。

我已经在本地服务器,Heroku服务器和Godaddy共享托管服务器上进行了尝试,

我尝试添加不必要的斜杠,完全更改URl,并删除co​​nsole.log之外的所有内容。

app.post('/sendEmail', (req, res) => {
    console.log('post test');
});
<form method="POST" action="/sendEmail">
      <h1>Contact Me</h1>
      <hr id="contact-page-hr">
      <h4>I am here to serve YOU. Please send your questions my way.</h4>

      <h6 id="contact-name-label"><span><input type="text" name="name" placeholder=" Name" value="" id="contact-name-input" required></span></h6>

      <h6 id="contact-email-label"><span><input type="email" name="email" placeholder=" Email" id="contact-email-input" required></span></h6>

      <h6 id="contact-message-label"></h6>
      <textarea name="message" id="contact-message-input" placeholder=" What's on your mind?"></textarea>
      <h6 class="sub-heading">(I usually reply within 48 hours)</h6>
      <button type="submit" class="send-button" id="contact-page-send">Send</button>
    </form>

我希望页面保持原状,但会显示:

“ Safari无法打开页面'localhost:5000 / sendEmail /',因为服务器意外断开了连接...

本质上就像是GET请求

1 个答案:

答案 0 :(得分:0)

您的请求处理程序不发送任何响应。因此,浏览器或服务器将最终使连接超时以等待响应。

HTTP请求要求某种响应。您需要res.send()res.redirect()来自请求处理程序的内容。

仅当您发送带有Ajax调用的POST请求时,页面才会保持原样,但如果您执行非JavaScript表单提交,则页面不会停留。浏览器提交的表单期望有一个新的HTML页面或类似302重定向之类的内容作为响应,并且客户端和服务器都在等待您的代码发送该页面,直到其中一个最终超时并错误关闭连接为止。