You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用缓存时CloudFront+ALB返回403错误(Drupal)的修复方案

修复CloudFront缓存下Drupal CSRF Token 403错误的方案

问题核心:Drupal的CSRF Token和用户会话(对应SSESS开头的Cookie)强绑定,而你当前使用的CacheOptimized缓存策略默认不把Cookie、X-CSRF-Token这类标识用户唯一性的字段纳入缓存键规则。当CloudFront缓存了某用户的请求响应后,其他用户请求同一URL时会命中缓存,导致Drupal验证Token时因会话不匹配返回403错误。

方案1:为特定URL配置独立的无缓存行为(推荐)

  1. 在CloudFront分发中新增缓存行为,精准匹配触发错误的特定URL路径(比如对应的API端点)。
  2. 该行为的配置细节:
    • 缓存策略选择CacheDisabled,确保这类需要CSRF验证的请求跳过缓存。
    • 源请求策略保持AllViewer,保证X-CSRF-Token、Cookie等请求信息全部转发到ALB和Drupal。
  3. 原有默认行为继续使用CacheOptimized,不影响其他请求的缓存效率。

方案2:自定义缓存策略,将会话Cookie纳入缓存键(仅适合特定场景)

如果必须对该URL启用缓存:

  1. 在CloudFront控制台创建自定义缓存策略,在「缓存键设置」中添加Cookie作为缓存键属性,选择「包含指定的Cookie」并填入SSESS*(匹配Drupal的会话Cookie)。
  2. 同时将X-CSRF-Token请求头加入缓存键,确保每个用户的Token请求对应独立的缓存条目。
  3. 将这个自定义策略应用到目标URL的缓存行为。

注意:这种方式会降低缓存命中率(每个用户会话对应一个缓存条目),仅在该URL请求量较小且必须缓存时使用。

额外验证点

  • 确认Drupal前端获取的CSRF Token是当前会话的有效Token,未使用旧的缓存Token。
  • 检查CloudFront的缓存TTL设置,避免长期缓存失效的响应。

内容的提问来源于stack exchange,提问作者Karen Kostanyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:27:32