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?
#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 的?能给我解释解释么。
其实重点是第三方 cookie 的坑,如果没有做过涉及跨站的应用,不会体会到这里有多少坑,也体会不到用 etag+jsonp 这样绕了个圈子模拟了一个简单的服务器设置 cookie 的工作的意义....
总有人把jsonp说成 Ajax..加了两行注释,不理解 jsonp 的可以看这里:http://hooopo.writings.io/articles/7-do-you-know-jsonp