2016-11-24 77 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;