簡體   English   中英

我可以用 Postman 得到正確的響應,但是獲取響應的主體是空的

[英]I can get correct response with Postman but body of the fetch response is empty

我向我的 API 發送帖子請求,其中包含正文中的用戶名和密碼。 當我使用 Postman 執行此操作時,我可以獲得一個正文包含令牌的響應。

在此處輸入圖像描述

但是當我在前面發送相同的請求時,我得到一個空體的響應。

在此處輸入圖像描述

我的心情在這里:

async function login(){
    await fetch('/auth/login',
    {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(
            {
                'userName' : userName,
                'password' : password,
            }
        )
    }
).then(
    res => {
        console.log(res)
        localStorage.setItem('Authorization',JSON.stringify(res))
    }
).catch(
    err => {
        console.log("Erorororor: " + JSON.stringify(err))
    }
)
}

問題是什么?

我將代碼更改為

.then(res => return res.text()).then(data => console.log(data)).catch(...)
    

現在我可以得到我想要的結果。

TLDR 解決方案

它是由服務器端的一些 header 設置引起的(例如,設置Access-Control-Allow-Origin: *兩次可能會導致此問題)。 通過調整標頭,您可以修復它。

細節

我遇到了同樣的問題。 它不是由 javascript 代碼引起的,因為瀏覽器本身也沒有獲取正文,但是獲取了標頭和 cookies。

在此處輸入圖像描述 在此處輸入圖像描述 在此處輸入圖像描述

通過展開計時選項卡,您可以看到一條警告,顯示請求未完成!

在此處輸入圖像描述

但是 postman 可以得到正文:

在此處輸入圖像描述

什么時候

相同的代碼在過去有效。 它最近出來了。 我不確定發生了什么變化,因為有很多事情發生了變化,例如,瀏覽器版本、升級的 nodejs 版本等。

固定的

通過調整服務器端的標頭解決了這個問題。

在此處輸入圖像描述

您正在使用郵遞員發送原始數據,但在前端將數據作為 application/json 發送,應該是 text/html。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM