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

AWS Websocket API通过Cloudfront访问返回403 Forbidden求助

解决CloudFront转发WebSocket API Gateway出现403 Forbidden的问题

核心问题分析

你的配置存在两个关键问题:

  1. 路径映射不匹配:CloudFront行为的路径模式与API Gateway的WebSocket端点路径不对应,导致请求转发到错误的后端路径。
  2. 缺失WebSocket握手必需请求头:源请求策略未包含Connection和Upgrade头,API Gateway无法识别WebSocket握手请求,返回403。

具体修复步骤

1. 修正路径映射配置

你的WebSocket API端点根路径是/dev,需确保CloudFront将请求转发到该路径:

  • 方案A(推荐,与原端点路径一致):
    • 修改行为的路径模式为/dev/*
    • 保持源路径为空
      此时访问wss://app.blablabla.cloud/dev/?param1=1&param2=test即可正常转发到原端点。
  • 方案B(保留自定义路径/dev/my-socket):
    • 修改源配置的源路径为/dev
    • 保持行为的路径模式为/dev/my-socket/*
    • 在行为的缓存键和源请求设置中,确认路径转换规则为「将请求路径中匹配路径模式的部分替换为源路径」(默认配置即可)
      此时访问wss://app.blablabla.cloud/dev/my-socket/?param1=1&param2=test会被转发到x5g9h3p2rq.execute-api.eu-central-1.amazonaws.com/dev/?param1=1&param2=test。

2. 更新源请求策略

编辑你的源请求策略,添加以下两个必需请求头:

  • Connection
  • Upgrade
    最终源请求策略应包含:
  • Cookies:全部
  • Query strings:全部
  • Headers:Sec-WebSocket-Key、Sec-WebSocket-Version、Sec-WebSocket-Protocol、Sec-WebSocket-Extensions、Connection、Upgrade

3. 验证其他配置

  • 确认行为的允许HTTP方法包含GET(已配置,无需修改)
  • 确认源配置的协议为「仅HTTPS」(已配置,无需修改)
  • 等待CloudFront配置部署完成(通常需要5-15分钟)后再测试

测试验证

修改完成后,用Postman重新发起请求:

wss://app.blablabla.cloud/dev/?param1=1&param2=test (方案A)
# 或
wss://app.blablabla.cloud/dev/my-socket/?param1=1&param2=test (方案B)

此时应收到101 Switching Protocols响应,且API Gateway控制台能正常触发$connect函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:09:51