2017-12-18 308 views
0

我需要阻止來自某個域的所有cookie。 (我不能使用內容設置API,因爲FireFox現在還不支持它)Chrome WebRequest API:如何屏蔽「Set-Cookies」?

我現在沒有很多的成功,我不知道我是否在正確的方向?

function modifyHeaders(headers: HttpHeader[]) { 
    headers.forEach((header: HttpHeader) => { 
     if (header.name === "set-cookie") { 
      /* makeExpire sets "Expires= sometimeInThePast" */ 
      header.value = makeExpire(header.value!) 
     } 
    }) 
} 

modifyHeaders(headers); 
return { responseHeaders: headers } 

這似乎是:

使用WebRequest的API,我添加了一個偵聽器,以

onHeadersReceived 

,並確保我的函數返回一個承諾,我再通過頭部像這樣去最低的開銷方式,但迄今似乎並不奏效。我想我可能會在錯誤的軌道上如何。

+0

您沒有顯示註冊偵聽器的代碼。確保在附加選項中提供'['blocking','responseHeaders']'。附:我不明白爲什麼在這個微不足道的案件中需要承諾。 – wOxxOm

回答

1
function onHeadersReceived(details) { 
    if (details.responseHeaders) { 
     return { 
      responseHeaders: details.responseHeaders.filter((x) => { 
       return x.name.toLowerCase() !== 'set-cookie'; 
      }) 
     }; 
    } 
    return {}; 
} 
browser.webRequest.onHeadersReceived.addListener(onHeadersReceived, { urls: ["<all_urls>"] }, ["responseHeaders", "blocking"]);