錯誤百科

HttpTransferCache 未傳輸的標頭

當程式碼嘗試存取一個沒有被 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。請檢查你的程式碼,找出這個標頭是在哪裡被存取的,並判斷它是否需要被納入傳輸快取。

如果用戶端不需要這個標頭,請考慮重構程式碼,避免存取它。