[英]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.