2016-11-24 157 views
0

我正在將鉻擴展轉換爲邊緣。然而,我發現邊處理來自簡單頁面和擴展的Ajax請求時會發送不同的cookie。處理ajax請求時,Microsoft Edge擴展發送不同的cookie

實施例:

  1. https://httpbin.org/cookies/set?bar=foo訪問從地址欄。添加了一個名爲'bar'的新cookie,其值爲'foo'。

  2. 在邊緣延伸的任何背景頁面,使用取

    fetch('https://httpbin.org/cookies',{credentials: 'include'}); 
    

調試控制檯顯示邊緣不發送「酒吧」的cookie創建一個Ajax請求。

  • 在後臺創建頁面

    fetch('https://httpbin.org/cookies/set?bar2=foo2',{credentials: 'include'}); 
    

    現在再次以下AJAX請求的 'BAR2' 的Cookie已定,但仍然沒有 '酒吧' 的cookie。

  • 再次從地址欄訪問https://httpbin.org/cookies。沒有'bar2'cookie。

  • 我做錯了什麼或它是邊緣的缺陷或特徵?

    +0

    _「這是一個邊緣的bug或特徵」_大多是一個哲學問題.. – Xan

    回答

    0

    發生這種情況的原因是Edge爲擴展和頁面上下文分割了Cookie存儲。我聽說它既是一個功能,也是一個bug。如果需要繞過該步驟,您可以:

    • 在上下文腳本中創建ajax請求並將結果返回給background.html;
    • 安裝Insiders Preview with newer Edge(在邊緣39.14936上測試),它應該正確添加cookies;
    • 如果你只需要一個cookie值,你可以做一個browser.cookie.get API調用。將無法使用HttpOnly cookie;