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