0

我正在将 chrome 扩展转换为边缘。但是,我发现边缘在处理来自简单页面和扩展的 ajax 请求时会发送不同的 cookie。

例子:

  1. 从地址栏访问https://httpbin.org/cookies/set?bar=foo 。添加了一个名为“bar”的新cookie,其值为“foo”。

  2. 在边缘扩展的任何背景页面中,使用 fetch 创建 ajax 请求

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

调试控制台显示 edge 不发送 'bar' cookie。

  1. 在后台页面中再次创建以下 ajax 请求

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

    现在'bar2' cookie 已设置,但仍然没有'bar' cookie。

  2. 从地址栏再次访问https://httpbin.org/cookies 。没有'bar2' cookie。

我做错了什么还是边缘的错误或功能?

4

1 回答 1

0

发生这种情况是因为 Edge 为扩展和页面上下文拆分了 cookie 存储。我听说它既是一个功能又是一个错误。如果您需要解决这个问题,您可以:

  • 在上下文脚本中发出 ajax 请求并将结果发送回 background.html;
  • 使用较新的 Edge 安装 Insiders Preview(在 Edge 39.14936 上测试),它应该正确附加 cookie;
  • 如果你只需要一个 cookie 值,你可以做一个 browser.cookie.get API 调用。不适用于 HttpOnly cookie;
于 2016-11-25T06:20:42.330 回答