参见这个讨论。

后端运行在多个 pods/节点时,当子序列请求过早进入时,后端将无法跨集群发送缓存失效请求。此外,如果多个请求分散在多个节点上,则会消耗延迟和不必要的资源。

对于单个客户端,Spartacus 应该尽可能多地与单个后端交互。这在传统上称为“粘性会话”。

CCv2为此做了部分准备。它将 ROUTE cookie 添加到响应中。但是,此 cookie 不可配置且不使用 SameSite 策略。这意味着解耦的店面可能无法使用它,因为它作用于不同的域。今天似乎只有 chrome 有这个问题,但未来预计会有更多的浏览器出现。

不幸的是,今天的 Spartacus 不使用 ROUTE cookie。 Cookie 根本不会随任何请求一起发送。为了利用 ROUTE cookie,必须执行以下操作:

  1. 在 http 客户端中使用 withCredentials: true 选项,以便每次请求都发送 cookie
  2. 使用额外的 CORS 过滤器 (Allow-Origin-With-Credentials:true) 配置商务后端,以确保 cookie 通过过滤器。

为了确保 Spartacus(或更好:angular)将随请求发送 cookie,请求必须使用 withCredentials: true 选项完成。 这可以在拦截器中完成,以便我们以通用方式执行此操作并确保没有请求忘记这一点。

一旦前端这些增强到位,就会抛出错误,因为必须完成额外的后端配置。 必须添加一个新的配置属性 corsfilter.ycommercewebservices.allowCredentials = true。

SAP Spartacus 端具体增强方式:

首先在 occ-config.ts 里增加一个配置项:useWithCredentials

然后新建一个 interceptor,如果检测到配置里启用了 withCredentials 的选项,就对所有的 HTTP 请求进行拦截,添加对应的 withCredentials 信息。

最后在 module 里注入这个 HTTP interceptor 实现:

测试方法

(1) 验证是否为第一个 OCC 请求检索了响应 cookie ROUTE
(2) 验证 ROUTE cookie 是否已添加到所有子序列请求中

测试结果:
当我们第一次加载 SPA 时,我们在第一次 occ 调用的响应中获得了 ROUTE cookie。

然后我们在后续的occ请求中获取ROUTE cookie。

更多Jerry的原创文章,尽在:“汪子熙”:

SAP Spartacus Session affinity相关推荐

  1. SAP Spartacus 的会话管理 Session Management

    官网 从一开始,Spartacus 就包含了客户端身份验证和用户身份验证. 尽管这对于 Web 应用程序来说并不常见,但对于 Spartacus 来说是必须的,因为后者需要使用 OCC API. 客户 ...

  2. SAP Spartacus 和 SmartEdit 集成的一些 bug

    我正在尝试使用 spartacus 和 smartedit,特别是我有兴趣查看选择分阶段产品目录版本的预览模式是否工作正常,但显然不是-我看不到对我在 stage 版本上做的属性,如果我查看浏览器发送 ...

  3. SAP Spartacus 用户认证的实现

    文章目录 UserAuthModule Authentication Flow AuthService Storing Tokens and User Identifiers 用户认证的典型流程和包含 ...

  4. Cloud Foundry Session Affinity(Sticky Session)的实现

    会话保持(Session Affinity),有时又称粘滞会话(Sticky Sessions), 是负载均衡领域设计需要着力解决的重要问题之一,也是一个相对比较复杂的问题. 会话保持是指在负载均衡器 ...

  5. SAP Spartacus 4.0 版本因为 hamburger 依赖导致构建出错的问题

    build from Schematics 遇到错误消息: SassError: Undefined function. https://github.com/SAP/spartacus/issues ...

  6. SAP Spartacus UI 服务器端渲染的调试启动方式 - debug 模式

    首先确认你已经熟悉这篇文章的启动方式:SAP Spartacus develop branch 的服务器端渲染启动方式. 第一步 添加一个新的 build script,把 --configurati ...

  7. SAP Spartacus 4.0 的技术变化

    在您迁移到 4.0 版库之前,我们强烈建议您切换到新的应用程序结构和新的功能库. 在多个小步骤中进行迁移更容易(迁移到新的应用程序结构,切换到提取的功能库,然后迁移到 4.0),您可以确保在每一步之后 ...

  8. SAP Spartacus travis ci-scripts 下面 e2e-cypress.sh 的实现分析

    文件地址:https://github.com/SAP/spartacus/blob/develop/.travis.yml 里面引用到了 e2e-cypress.sh: https://github ...

  9. SAP Spartacus 里的 .release-it.json 文件

    在 SAP Spartacus package.json 里有一个依赖叫做 release-it: 这个工具的链接:https://github.com/release-it/release-it 这 ...

最新文章

  1. EXSI中Linux安装tools
  2. java dh算法_https密钥交换DH算法
  3. asp.net core webapi项目配置全局路由
  4. python网络爬虫系列(三)——cookie的原理、保存与加载
  5. 阿里忘禅:蚂蚁集团分布式注册中心建设分享
  6. MyCat分布式数据库集群架构工作笔记0024---高可用_单表存储千万级_海量存储_分表扩展_按照日期分片
  7. 回顾2006年:网络通信十大事件
  8. C#_串口通信_SerialPort_一个最基础的串口程序
  9. mac pycharm汉化(附带汉化包)
  10. 四旋翼无人机飞行器基本知识(四旋翼无人机结构和原理+四轴飞行diy全套入门教程)
  11. 关于Python包导入报错的总结
  12. 固定翼飞机数学建模入门(姿态角篇)
  13. 给全国高校本科招办的一封公开信
  14. 苹果软件上app注意事项
  15. 举一个简单的例子,轻松搞懂所谓的“观察者模式”
  16. Linux 文件夹右下角有锁,解锁
  17. MindManager2020永久激活版如何绘制思维导图
  18. mac修改终端字体样式和大小
  19. 【Python技巧】正则表达式:(?:)匹配多个字符串之一;(非获取匹配)
  20. 爬取美女图片【绝对福利】

热门文章

  1. nodejs mysql 增删改查_Nodejs操作MySQL-增删改查
  2. eclipse中经常用到的快捷键
  3. npm script 的实践
  4. 华为S系列交换机全面阻击“WannaCry”
  5. Nginx + Tomcat 配置负载均衡集群
  6. Linux部署web程序
  7. JSF 2.2: HTML5 Support
  8. KDE Akademy 2008 会议
  9. 略微讲一下今天的所学吧
  10. BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈