當程式碼嘗試存取一個沒有被 HttpTransferCache 從伺服器傳輸到用戶端的 HTTP 標頭時,Angular 就會產生這個警告。
HttpTransferCache 預設不會傳輸任何標頭,以避免潛在的安全問題或不必要的資料傳輸。當用戶端存取了未包含在傳輸內容中的標頭時,Angular 會記錄這個警告,幫助你找出缺少的標頭。
如何修復
若要把特定標頭納入傳輸快取,請使用 includeHeaders 選項。
在請求層級設定
把 transferCache 參數加入你的 HTTP 請求:
this.http.get('/api/data', {
transferCache: {
includeHeaders: ['cache-control', 'etag'],
},
});
在應用程式層級設定
在提供傳輸快取時設定 includeHeaders:
provideClientHydration(
withHttpTransferCacheOptions({
includeHeaders: ['cache-control', 'etag'],
}),
);
只納入你的應用程式邏輯真正需要的標頭。處理敏感標頭時請務必謹慎。
如何除錯
警告訊息包含標頭名稱與請求 URL。請檢查你的程式碼,找出這個標頭是在哪裡被存取的,並判斷它是否需要被納入傳輸快取。
如果用戶端不需要這個標頭,請考慮重構程式碼,避免存取它。