服务器端渲染tokencookie

历史性的时刻,现在登陆用户刷新终于不会闪了!

实现了正确的服务器端渲染,在将控制权交给 angular-universal 之前,先从 cookie 中获取 token,并且用 Angular 的一个 service 注入进去。

至于这个 cookie 怎么来的,当然是每次 API 请求都会去 set-cookie。当然这样并不是很好,可能会极大地增大请求——因为 token 很长……

那么有什么更好的解决方法呢?

Colliot4/11/2018, 9:57:17 PM

攻克技术难关。

其实并不是很难,原理上说。只是我还不是很明白,Angular 里哪些操作会在服务端执行,哪些不会。

在 service 里似乎显然异步的不会执行,在 redux 里似乎有的可以,有的不行,抑或是只能执行一层?或者是有超时机制?

这次我只能劫持 express 了……但是单独写一个中间件似乎也不行,我甚至只能在路由里面写,不加载就不触发 render……真是太暴力了。

Colliot4/11/2018, 10:04:36 PM

为什么会出现 API 变慢的情况?

Colliot4/11/2018, 10:04:51 PM

似乎连续发了两次回复之后(而且都成功的时候),会报错(预期中的),但是不会正确加载回复。

Colliot4/11/2018, 10:05:24 PM

不过这个带来了一个 bug,就是现在用户注销的时候,界面依然不会显示 ta 已经注销了。跟 Apollo Client 似乎有一定关系(详见Apollo Client 为什么 bug 这么多?)。

Colliot4/11/2018, 10:36:38 PM

Preview:

Cancel

Elsewhere

tigertang replied to 浏览器和 Node.js 有哪些不同?

浏览器里setTimeout的this永远指window,如果有其他需求的请用闭包实现? 但是node里显然没有window,于是node就把setTimeout里的this变成了timeout吗?

Colliot replied to 虎哥这垃圾网站真的支持Kotlin的高亮吗?

看起来确实有一些问题

ice1000 replied to 我感觉这个网站已经开始走下坡路了

为什么虎哥在这个贴下发表无关内容。是因为这是H2O区吗。

NightyNight replied to 对 Angular 感到失望

你是虎哥末?为什么回复要10字以上?

sinoon replied to 浏览器和 Node.js 有哪些不同?

为什么this会是这个Timeout对象?理论上应该指向global才对呀

Colliot replied to 我们应该有良好的编辑器,可以大大提高用户体验

另外应该用 AWS S3 来承载静态资源,从而真正迈入资源自有化阶段。

Colliot replied to 如何阅读 Chrome 的源码?

似乎找到了前述的调试 Chrome 相关的:从Chrome源码看浏览器如何构建DOM树,也找到了前述的 Node.js 相关的:node源码粗读(2):node编译过程详解及如何在本地进行源码修改和调试。真是双喜临门啊!

Colliot replied to 如何阅读 Chrome 的源码?

目前最新回复的帖子,刷新之前还不能编辑。这是一个前端 bug。

Colliot replied to 如何阅读 Chrome 的源码?

似乎在编辑自己回复的时候遇到了「已经回复过本贴」的错误……我可能需要 sentry 来记录这一问题。