我正在开发一个Crossrider扩展来记录网页信息。当用户单击扩展按钮时,它会触发一个popUp,在该代码中,我使用appAPI.request.get()从我的myDomain.com调用一个php页面,该页面读取然后为myDomain.com设置一个cookie值。这适用于IE,Chrome,Safari和Firefox,但我的MacBook Safari无法设置cookie。我在我的iMac上运行完全相同版本的OSX和Safari,它运行正常。我已经仔细检查了两个prefs是否相同而且它们是。
这可能是跨域限制吗?由于在popUp中通过js调用远程页面会限制它为其所在域(myDomain.com)设置cookie的能力吗?
编辑2014-05-22
/* background.js */
appAPI.browserAction.setPopup({
resourcePath:'index.html',
height: 380,
width: 320
});
...
/* index.html */
appAPI.request.get({
url: 'https://example-domain.com/this-file-sets-a-cookie.php',
....
});
答案 0 :(得分:3)
这是Safari阻止cookie的问题。看来在某些情况下,cookie被视为由第三方设置并因此被拒绝。可能是因为地址栏显示的URL与设置cookie的URL不同,即使设置cookie的域和为cookie指定的域相同。当我将隐私设置更改为“从不”拒绝cookie时,我能够设置cookie。为什么它在一台机器上工作而不在另一台机器上运行相同的操作系统版本,相同的Safari版本以及两者都被拒绝来自“来自第三方和广告商”的cookie是未知的。
幸运的是,我能够删除我设置cookie的php代码而不影响我的插件。