繁体   English   中英

res.render()和res.redirect()的行为类似于res.send()

[英]res.render() and res.redirect() behave like res.send()

我正在尝试将fetch用于简单的帖子请求:

const headers = new Headers({
  Accept: 'application/json',
  'Content-Type': 'application/json',
});

fetch('/checkout/billing', {
        headers,
        body,
        credentials: 'include',
        method: 'POST',
      })
      .catch(console.error);

服务器端端点如下所示:

if (!validateResult) {
        res.redirect('/checkout/shipping');
      } else {
        view.render('checkout/billing')
      }

因此,当我使用常规HTML表单提交时,它可以正常工作(重定向或渲染),但是当我使用fetch而不是重定向或渲染时,我会收到HTML正文作为响应,就像我会使用res.send(html) ,知道什么会导致此问题吗?

TL; DR:按照规范向您发送HTML。


您期望客户端提供JSON,但是您要求提供呈现HTML的路径,这就是为什么获得HTML的原因。

渲染一词可能有点令人困惑:它来自您拥有一个服务器将转换为html的模板(可能是html / pug / mustache / ...)的想法。 但是最后, 呈现时服务器的作用只是发送最终的HTML作为对客户端发出的请求的响应。

因此,如果请求的是HTML视图,则将按预期工作。 但是,如果您想发出AJAX请求,那么您将得到这种奇怪的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM