2016-10-31 67 views
-2

爲什麼Request和Fetch返回不同的頭文件?爲什麼請求和獲取返回不同的頭文件?

Response對象中的標題是否總是使用Fetch進行限制?儘管它在服務器上使用,各種使用的模式?

請求似乎返回一組豐富的頭文件,而Fetch則沒有。

除了語言機制差異(Promise based,Callback等..等等)這兩者有什麼不同?爲什麼不返回一組豐富的標題,另一個是?

fileURL在這兩個示例中使用的都是跨域。在Node/Express服務器上,將撥打Google CDN。

使用請求
https://github.com/request/request

request(fileURL, (err, res, body) => { 
    //headers in res 
    //are pretty rich 
}); 

使用取
https://github.com/matthew-andrews/isomorphic-fetch

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

const reqConfig = { method: 'POST', 
        headers: myHeaders, 
        body: data, 
        mode: 'cors', //or 'no-cors', or this field blank.. 
        cache: 'default' }; 

fetch(fileURL, reqConfig).then(res => { 
    //headers in res 
    //are not very complete 
}) 

//我沒有訪問CORS政策對服務器,這樣是不是一種選擇..

編輯 即使在操作{模式:「無CORS」}頭不充分。

+0

如果這是'node',那麼''fetch'多邊形填充是用於'node'的嗎? – Jack

+1

爲什麼downvote?如果downvote,plz會幫助所有人並解釋原因。謝謝.. –

+0

我沒有downvote,但我認爲這個問題有點奇怪......如果你真的需要'node'中的所有'headers',那麼'fetch'幾乎肯定是錯誤的選擇......因爲它是爲瀏覽器設計,用於控制報頭以確保安全。我能想到的唯一理由是,在節點中使用'fetch'是有意義的,如果你有通用應用程序並且需要在兩個地方(客戶端+服務器)運行相同的代碼......但是如果你需要全部這些頭文件然後不能這樣。長話短說,你爲什麼在'node'中使用'fetch'? – Jack

回答

1

由於您在cors模式下運行,因此您請求的服務器必須爲white list the headers you can see

默認情況下做CORS請求時,只有這些頭可供選擇:

  • 的Cache-Control
  • 內容語言
  • 內容類型
  • 過期
  • 的Last-Modified
  • Pragma
+0

即使不在'{mode:'no-cors'}中操作,標題未滿。 –

+0

@GN。那麼'res.headers.raw()'怎麼樣? – Jack

0

fetch可能不是您想要的node,除非您有一個通用應用程序,並且需要相同的代碼才能在客戶端和服務器上運行。 fetch是爲瀏覽器創建的,所以它至少會在瀏覽器中鎖定你的頭文件(請參閱我的其他答案),所以如果你的願望是完全訪問頭文件,那麼node特別適合。

相關問題