我正在将Chrome扩展名转换为边缘。但是,我发现在处理简单页面和扩展程序的AJAX请求时,Edge发送了不同的cookie。
示例:
-
访问地址栏中的https://httpbin.org/cookies/set?bar=foo。添加了一个名为" bar"的新饼干,并添加了" foo"值。
-
在边缘扩展的任何背景页面中,使用fetch
创建AJAX请求fetch('https://httpbin.org/cookies',{credentials: 'include'});
调试控制台显示边缘不发送" bar'cookie。
-
在背景页面中再次创建以下AJAX请求
fetch('https://httpbin.org/cookies/set?bar2=foo2',{credentials: 'include'});
现在已经设置了'bar2'cookie,但仍然没有'bar'cookie。
-
再次从地址栏中再次访问https://httpbin.org/cookies。没有" bar2" cookie。
我是在做错事还是它是边缘的错误或功能?
发生这种情况,因为Edge将Cookie商店分配给扩展名和页面上下文。我听说过它是一个功能和错误。如果您需要解决,可以:
- 在上下文脚本中提出ajax请求,并将结果发送给后台.html;
- 安装内部人员预览具有较新的边缘(在Edge 39.14936上进行了测试),该预览应正确附加cookie;
- 如果您只需要一个cookie值,则可以执行浏览器。cookie.getapi调用。不会与httponly cookie一起使用;