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

SvelteKit搭配Express时跨站POST提交被禁止的问题排查

SvelteKit + Express 环境下POST请求403错误求助

我的环境是SvelteKit应用搭配Express服务器(用于处理WebSocket)。POST请求在Vite开发环境下正常运行,但在Express生产环境里完全没法用,会出现状态码403的错误,提示“Cross-site POST form submissions are forbidden”,引用策略为“strict-origin-when-cross-origin”。

我查过Stack Overflow上的相关问题,但除了禁用CSRF校验这种不安全的方案外,其他解决办法都不管用。也翻了SvelteKit官方的Node适配器文档,没找到能解决的方法。

我已经试过这些办法:

  • 在.env文件中添加ORIGIN=http://localhost:3000,安装了dotenv依赖并在服务器文件里加了dotenv.config(),但没效果。
  • 在svelte.config.js中设置csrf: {checkOrigin: false}能解决问题,但这个方法不安全,不推荐使用。
  • 终端运行node -r dotenv/config build,输出“Listening on 0.0.0.0:3000”但Express服务器完全启动不了,不确定是否需要把这个命令加到package.json里,而且文件里也没有node build相关配置。
  • 用node -r dotenv/config server.js启动Express服务器后,访问localhost:3000会出现“Invalid request body”(状态码400)错误。

就算读了不少相关博客,配置SvelteKit的WebSocket还是让人头疼。

我的server.ts代码如下:

import express from "express";
import { handler } from "./build/handler.js";
import { attach_sockets } from "./sockets.js";
import dotenv from "dotenv";

dotenv.config();

const PORT = 3000;
const app = express();
const server = app.listen(PORT, () => {
    console.log("server is listening on port", PORT);
});
app.use(handler);

attach_sockets(server);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:42:18