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

FastAPI WebSocket通过Postman访问返回403 Forbidden问题求助

解决FastAPI WebSocket 403 Forbidden问题的方法
  • 检查CORS配置
    FastAPI默认的CORS规则可能会拦截跨域的WebSocket请求。如果你的请求来源和服务端不在同一域名下,得手动配置CORS中间件,允许WebSocket的跨域访问。
    修改代码里的CORS配置,确保开启allow_credentials=True,并添加允许的源(测试环境可以临时用["*"],生产环境一定要指定具体域名)。示例代码:

    from fastapi.middleware.cors import CORSMiddleware
    
    app = FastAPI()
    
    app.add_middleware(
        CORSMiddleware,
        allow_origins=["*"],  # 测试环境临时使用,生产替换为实际允许的域名
        allow_credentials=True,
        allow_methods=["*"],
        allow_headers=["*"],
    )
    
  • 排查自定义中间件或安全验证
    如果你给FastAPI加了自定义中间件(比如权限校验、日志中间件),或者用了OAuth2这类安全依赖,这些组件可能在WebSocket请求到达端点前就返回了403。

    • 检查所有全局中间件,确认它们不会拦截WebSocket请求——WebSocket请求的方法是GET,且带有Upgrade: websocket头,可以在中间件里判断这类请求并直接放行。
    • 如果WebSocket端点不需要安全验证,确保它没有继承全局的安全依赖,或者给它单独设置允许匿名访问。
  • 检查服务器和网络层面的拦截

    • 防火墙/安全组:确认服务器的目标端口(注意你写的30pq可能是输入错误,应该是数字端口,比如3000)已经对外开放,没有拦截WebSocket流量。
    • 反向代理(比如Nginx):如果用了反向代理转发请求,必须配置支持WebSocket的转发规则,否则代理会拒绝请求。以Nginx为例,需要添加头信息转发:
      location /ws {
          proxy_pass http://你的FastAPI服务地址:端口;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
          proxy_set_header Host $host;
      }
      
  • 检查Postman的请求设置
    Postman的WebSocket请求有时候需要确认头信息是否正确。确保请求包含Upgrade: websocket和Connection: Upgrade这两个关键头——Postman通常会自动添加,但可以手动检查:

    1. 打开Postman的WebSocket请求,切换到「Headers」标签页。
    2. 确认存在这两个头,没有的话手动添加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:06:01