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

SvelteKit请求Rails/Apache后端遇CORS问题:Payload丢失排查

解决跨域请求带JSON Content-Type的CORS问题

问题根源

当请求设置content-type: application/json时,属于非简单跨域请求,浏览器会先发送一个OPTIONS预检请求,验证服务器是否允许该请求方式、自定义头。你的Apache仅配置了Access-Control-Allow-Origin *,缺少对预检请求的响应配置,导致浏览器拦截请求。

Apache配置修正

在你的Apache虚拟主机配置文件或.htaccess中添加以下配置,覆盖预检请求的处理和必要的CORS头:

# 允许跨域源(保留原有配置)
Header set Access-Control-Allow-Origin "*"

# 允许的请求方法
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE"

# 允许的自定义请求头(必须包含content-type)
Header set Access-Control-Allow-Headers "Content-Type, Accept, Authorization"

# 处理OPTIONS预检请求,直接返回200状态码
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

配置说明

  1. Access-Control-Allow-Methods明确包含POST和OPTIONS方法,确保预检请求被许可
  2. Access-Control-Allow-Headers指定允许Content-Type,让浏览器确认JSON类型的请求头合法
  3. Rewrite规则直接响应OPTIONS请求,避免Apache返回默认的405错误

配置完成后重启Apache,你的SvelteKit fetch代码无需修改,即可正常携带JSON请求体发送跨域POST请求,Rails也能正确解析Payload参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:27:04