Access denied, Please sign in and make sure you have proper permission.
Topic has been selected as the excellent topic by the admin.
智商太低看不懂 demo, 求解释 ETAG 到底啥用处..?
#2 楼 @jjym 跨站 session 这种需求你理解不?比如,淘宝和天猫虽然是两个网站,域名不同,但是他们想共享用户购物车里的商品。
nice
在 demo 里,seesion 存放在 dev.seesion.com 里,ETAG 是 seesion_id。
session_id 从 dev.seesion.com 的 ETAG 传递到 dev.app.com 的 cookie 中,
然后在 dev.app.com 中用 cookies 中的 seesion_id 去 dev.seesion.com 取得数据,再 append 到 dev.app.com 的页面里
这相当于用 ETAG + 第三方服务 替代了 第三方 cookie?
#4 楼 @jjym 5 楼解释的不错。至于为什么要这样,是因为其他方案都很难达到跨域标识用户的效果。
etag 明白 session 也明白,但是 etag + 第三方服务器代替 第三方 cookie 还是不太明白。
#9 楼 @zgm 就是说以前这种需求都是用第三方 cookie 来解决的,demo 里是一种不涉及到第三方 cookie 读写的方案。
可是为什么是 etag, etag 不是有他特殊的使用场景么。
#12 楼 @zgm 如果不是 etag 的话和 session server 没办法沟通 (注意 js 写入的是 app 的 cookie),ajax 用 cahce: true 会把 etag 一起发送到 session server
所以 session server 可以通过 HTTP_IF_NONE_MATCH 取出 etag,也就是 session_id
我刚也卡这里了,不熟悉 http 规范...
#12 楼 @zgm 就是利用浏览器会发送 etag 来检查缓存
相当于这样联系起来
浏览器 -> etag -> session server
session server -> http -> app server
app server -> cookie -> 浏览器
#14 楼 @zgm 只有 session server 操作 session 的几个 action 是把 ETAG 当特殊用途的,app server 完全正常
#16 楼 @jjym 有时间你分享个关于 eventmachine celluloid actor model reactor pattern 相关的东西吧。
#13 楼 @jjym
- 不是 ajax,是 jsonp,因为跨域请求,jquery 自动做的转换
- 默认浏览器就会发 etag ,cache true 作用是阻止 jquery 在 url 里加随机数,这样 url 变了 etag 就变了
#20 楼 @hooopo ,#21 楼 @jjym
我的理解不知道对不对
当访问 app1?name=name 的时候
ajax 请求 session.com,这时候没有 HTTP_IF_NONE_MATCH,拿到的 session_id 为 SecureRandom.hex
然后调用回调,把获取到的 session_id 存为 cookie 然后页面刷新,app1 的后端会把 name=name 这个存到 session.com 的 redis 中
当访问 app2 的时候
ajax 请求 session.com,带着 etag,拿到的 session_id 为刚才 request.env["HTTP_IF_NONE_MATCH"],也就是刚才 app1 中那个 session_id
然后调用回调,把获取到的 session_id 存为 cookie 然后页面刷新,app2 的后端会读取 session.com 中的 redis,拿到 params
我的问题是:
etag 是什么时候生成的?etag 是怎么从 app1 到达 app2 的?能给我解释解释么。
#23 楼 @davidqhr etag(特指 session server 的) 不需要到达 app server, etag 只是 client 和 session server 通信用的 (可以看 #15 的关系图), 关于 etag 生成搜索下就有了
暴漫的 session 总是串,不知是什么原因造成的
#27 楼 @hooopo 膜拜啊!不过我们用的是 rails
一般 Unicorn 的 preload false 的情况下不会出现