Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

请让后端知道你使用了无 Cookie 请求

  在前后端分离的开发模式下,开发人员之间往往都不知道对方用了什么黑科技。原本和谐的 Web 环境总是有 Cookie 的,但自 CORS 之后又出现了 fetch API,一个比一个不愿意带 Cookie。而后端开发人员可能并不知道这件事,认为所有请求都还是以前的 Ajax,那就可能搞出问题。
  后端开发人员可能会认为,只要把 Cookie 设置成 httponly 的话就完全由后端控制。但是现在,即使一个 Cookie 设置成 httponly,前端虽然无法读写里面的内容,但可以选择不发送。因为后端一些依赖于 Cookie 作为凭证的东西遇到不发送 Cookie 的前端就会呵呵。
  一个最典型的例子是后端给用户设置一个 httponly 的 Cookie 来监控用户的 API 调用链。但由于前端对一些公共的 GET 接口使用了不带 Cookie 的调用方式,导致后端的这套监控体系乱掉。
  假如后端的逻辑是一旦发现没有 SessionID 的请求就会种一个 SessionID 到用户的 Cookie 中,并且在 redis 中保存 SessionID 对应的数据。而前端开发人员可能认为,某个 API 是不依赖用户信息的,所以调用时不传 Cookie 过去。虽然前后端的逻辑都是正确的,但这两件事一起发生时,如果这个 API 的调用量特别大,后端的 redis 可能会直接爆掉。
  而且 SessionID 不一定就是后端业务的专利,一些基于七层代理的负载均衡服务器也会通过 Cookie 来做一致性哈希,前端如果发起大量无 Cookie 的请求同样会把这些负载均衡机搞挂。
  虽然以上的一切都是我脑补出来的,目前还没真正遇到过,但是想想都觉得毛骨悚然吧?我觉得前后端应该多交流自己所使用的技术才能避免这种悲剧。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^