Safari扩展cookie未被识别/通过
Safari extension cookies not recognized/passed
我最近一直在将Chrome扩展移植到Safari,并遇到了这种错误(错误,功能等)
因此,在全局页面中,我有一个XMLHTTP请求到一个安全页面,只有在您登录后才可用。
的例子:
- 我只是使用浏览器登录-通常你做在facebook或其他安全页面
- 之后,在全局页面中,我加载一个仅登录可用的xmlhttp -它说我没有登录
似乎全局页面有它自己的cookie,所以一个安全的页面认为我是新的
ps:在Chrome中,我可以加载该页面,它认为我代表登录用户行事,所以我猜在Safari中有一些限制
pps:我听说在Safari中有一个阻止第三方cookie的选项,但即使我把它选中"从不阻止",它仍然不起作用
不幸的是,这个问题在safari 5.1.7 windows版本中仍然存在。
我找到了一个解决方法,通过消息传递将登录凭据(用户名/密码对)传递到全局页面,全局页面使用它们静默登录。
我在Windows的Safari 5.1.2中遇到了这个问题,但升级到当前版本(5.1.7)后,这个问题消失了。也许他们把它固定在某个中间版本上。我在Mac OS x的Safari 5.1.3上也能运行。
cookie可以选择标记为HttpOnly或Secure。如果它没有传递它们,那么您可能正在尝试从登录后的HTTPS登陆页面访问同一站点上的HTTP资源,因此浏览器将不允许通过非安全链接发送安全cookie。实际上,HTTP和HTTPS站点被视为独立的。
您需要确保在登录后,将浏览器重定向到HTTP并设置HttpOnly cookie,或者仅通过HTTPS执行XMLHttpRequest。这将是更安全的,并没有真正增加太多的服务器开销(它曾经是当硬件很慢,但谷歌说,当Gmail转向使用HTTPS作为默认设置,它不会影响服务器负载超过百分之几)。
尝试将整个站点设置为通过HTTPS运行,看看是否可以修复它。另外,使用firebug和firecookie扩展来查看cookie是否启用了这些选项中的任何一个(右侧两列)。
cookie不能是"Session 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
}))
…
- 通过单击事件识别画布上的对象
- 如何确保通过电子邮件发送的html文档中的Google Drive链接不会被识别为附件
- 角度.js - 识别通过路由或 ng 控制器调用的控制器
- 咕哝:咕哝rev任务通过添加随机哈希来更改我的图像,从而阻止我的html识别它们
- 如何通过ai关键字识别元素
- 通过放置在对象中来识别对象特性
- 禁用通过Web语音API进行识别的污言秽语过滤器
- $scope.param 无法通过函数识别
- 即使使用“on”,JQuery 也无法识别通过主干视图添加的元素
- jQuery没有't似乎通过Ajax调用状态代码403识别出不同的字符串
- jQuery-通过对象在兄弟对象中的位置(索引)来识别对象
- 通过小部件设置第三方cookie,这样我以后就可以识别用户了
- 通过用户类型识别节点的Javascript DOM
- 如何识别复选框是通过鼠标还是键盘选中的
- 通过眼睛、嘴巴、耳朵进行人脸识别.在Javascript中
- 我可以通过javascript通过名称识别表单按钮吗
- 通过数据识别图像格式
- 移除>通过使用javascript/jquery识别适当的文本节点,从列表中获取
- 通过HTML5地理定位API以外的方式识别用户的地理位置
- Safari扩展cookie未被识别/通过