首页 文章

Safari扩展cookie未被识别/传递

提问于
浏览
20

我最近一直在向Safari移植Chrome扩展程序,并遇到了这种错误(错误,功能等)

因此,在全局页面中,我向安全页面发出XMLHTTP请求,该页面仅在您登录后才可用 .

例:

  • 我只是使用浏览器登录 - 通常在Facebook或其他安全页面上进行

  • 之后,在全局页面中,我加载了一个只能登录的xmlhttp - 它说我还没有登录

似乎全局页面有一些自己的cookie,所以一个安全的页面认为我是新的

ps:在Chrome中,我可以加载该页面,它认为我代表登录用户,所以我猜Safari中有一些限制

pps:我听说在Safari中有一个Block第三方cookie选项,但即使我检查它“永不阻止”它仍然不起作用

4 回答

  • 1

    我在Safari 5.1.2 for Windows中遇到了这个问题,但在升级到当前版本(5.1.7)后问题就消失了 . 也许他们修复了一些中间版本 . 它也适用于Mac OS X的Safari 5.1.3 .

  • 3

    不幸的是,在safari 5.1.7 windows版本中仍然存在这个问题 .

    我找到了一种解决方法,使用消息传递将登录凭据(用户名/密码对)传递到全局页面,全局页面使用它们以静默方式登录 .

  • 0

    Cookie可以选择标记为HttpOnly或Secure . 如果它没有通过它们,您可能正在尝试从HTTPS登录后登录页面访问同一站点上的HTTP资源,因此浏览器将不允许通过非安全链接发送安全cookie . 实际上,HTTP和HTTPS站点被视为单独的 .

    您需要确保在登录后,将浏览器重定向到HTTP并设置HttpOnly cookie,或者只是通过HTTPS执行XMLHttpRequest . 这样会更安全,并没有真正增加太多的服务器开销(过去常常在硬件运行缓慢的情况下,但谷歌说,当Gmail过去使用HTTPS作为默认设置时,它对服务器负载的影响不会超过一对%) .

    尝试将整个站点设置为通过HTTPS运行,看看是否可以修复它 . 此外,使用firebugfirecookie extension查看cookie是否启用了这些选项中的任何一个(右侧两列) .

  • 0

    Cookie不得为“会话Cookie”,必须是持久性的 . 设置到期日期 .

    它需要在服务器端完成 . 在示例中,对于Node.js / Express,这样的事情:

    var session = require('cookie-session');
    …
    var cookieExpires = new Date();
    cookieExpires.setDate(cookieExpires.getDate() + 1); // Set 1 day cookie lifetime
    …
    app.use(
        session({
            …
            name: 'session',
            expires: cookieExpires
        }))
    …
    

相关问题