我知道它決定了客戶端可以從服務器回應中訪問的標頭,但是,我對何時應用它感到困惑。它是否確定標頭允許的每個跨域請求的Access-Control-Allow-Origin
標頭?
為了測驗這一點,我在 express 中設定了一個測驗站點并將以下代碼放入其中:
app.get('/',(req,res)=>{
res.set('Access-Control-Allow-Origin','https://www.google.com') // to be able to make a cross-origin request
res.set('foo', 'bar') //custom header that should get filtered because i havent set the access-control-expose-headers header
res.send('Hello world')
})
根據我對此的理解,由于我沒有Access-Control-Expose-Headers
在回應中設定任何特殊的標頭,因此客戶端應該只能訪問CORS-safelisted response headers
,因此應該無法看到我的foo
標頭。
但是當我在https://www.google.com
(我允許帶有標頭的 CORS )并向我的測驗站點Access-Control-Allow-Origin
發送請求時,我在回應中看到標頭就好了。為什么是這樣?有人可以解釋這是如何作業的,或者至少可以為我指明正確的方向嗎?提前致謝。GET
foo
uj5u.com熱心網友回復:
我想到了。我收到自定義標頭的原因是我正在閱讀 Chrome 開發工具的“網路”選項卡中的回應標頭。當我運行這個腳本時:
fetch('http://127.0.0.1:3000/')
.then(r => {console.log(response.headers.get('foo'))})
它列印null
。因此,獲取請求實際上無法訪問標頭,只能訪問開發工具。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/485267.html