簡體   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