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

SvelteKit开发模式下跨站POST提交被禁止问题求助

问题:SvelteKit 跨域POST表单提交被禁止

本地开发环境中,SvelteKit应用部署在http://localhost:5173,前端有一台运行在http://localhost:8057的Nginx服务器,用于提供静态文件并代理需要SvelteKit处理的请求。

在http://localhost:8057/login页面提交登录表单时,页面仅显示提示:"Cross-site POST form submissions are forbidden"。

已尝试的解决方案

  • 设置ORIGIN环境变量:
    .env文件内容:

    ORIGIN=http://localhost:8057
    

    通过服务端import { env } from '$env/dynamic/private';打印确认变量已生效,但问题仍存在;也尝试启动SvelteKit时直接传入变量(ORIGIN=http://localhost:8057 npm run dev),结果依旧。

  • 在Nginx中添加proxy_set_header Origin http://localhost:5173;可以解决问题,但这几乎等同于关闭CSRF防护,不愿采用该方案。

  • 尝试文档推荐的x-forwarded-proto和x-forwarded-host配置:
    .env文件内容:

    PROTOCOL_HEADER=x-forwarded-proto
    HOST_HEADER=x-forwarded-host
    ORIGIN=http://localhost:8057
    

    Nginx配置:

    location @sveltekit {
      proxy_pass http://localhost:5173;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Host $host;
    }
    

    但问题仍然存在。

代码运行说明

  • 执行docker-compose up --build启动Nginx
  • 进入web-app目录,先运行npm install安装依赖,再执行npm run dev启动SvelteKit应用
  • Mac用户需回滚特定提交,因为Docker host网络模式在Mac上无法运行

内容的提问来源于stack exchange,提问作者Cédric Van Rompay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:35:00