javascript - 无法使用 appAPI.request.get() 在 Crossrider 中设置 cookie

标签 javascript php cookies crossrider

我正在开发一个 Crossrider 扩展来记录网页信息。当用户单击扩展按钮时,它会触发一个弹出窗口,在该代码中,我使用 appAPI.request.get() 从 myDomain.com 调用一个 php 页面,该页面读取并设置 myDomain.com 的 cookie 值。这适用于 IE、Chrome、Safari 和 Firefox,但在我的 MacBook 上 Safari 无法设置 cookie。我在 iMac 上运行完全相同版本的 OSX 和 Safari,并且运行良好。我已经仔细检查过这两个首选项是否相同,而且确实如此。

这是否可能是跨域限制?由于远程页面是通过弹出窗口中的 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',
      ....
    });

最佳答案

这是 Safari 阻止 cookie 的问题。在某些情况下,cookie 似乎被视为由第三方设置,因此被拒绝。可能是因为地址栏显示的 URL 与设置 cookie 的 URL 不同,即使设置 cookie 的域和为 cookie 指定的域相同。当我将隐私设置更改为“从不”拒绝 cookie 时,我能够设置 cookie。为什么它在一台机器上工作,而在另一台机器上运行相同的操作系统版本、相同的 Safari 版本,并且都设置为拒绝来自“来自第三方和广告商”的 cookie,目前尚不清楚。

幸运的是,我能够删除设置 cookie 的 php 代码,而不会影响我的插件。

关于javascript - 无法使用 appAPI.request.get() 在 Crossrider 中设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796555/

相关文章:

javascript - Bootstrap 工具提示手动触发器不起作用

php - 恰好 10 个字符的 perl 正则表达式

java - 无法在 safari 的请求 header 中发送带有 HTTPOnly 标志的 cookie

javascript - 验证 moveToElement 或 clickandHold 是否正常工作

javascript - 检查 jQuery 数组中的值是否按顺序排列

php - YouTube PHP API v3 - 包含recordingDetails时上传失败 - Double的值无效

java - 我怎样才能用javascript读取JSESSIONID?

python - 在 Django 中测试 cookie 是否存在

javascript - 使用javascript在html中基于下拉选择显示和隐藏div元素

php - SQLSTATE[HY000] [1045] 使用 000webhost 连接到数据库时出现异常