Next.js 13 如何修改Server Action的请求Content-Type?
如何修改客户端调用Server函数时的Content-Type为application/json
当然可以改,具体实现要看你用的框架和调用方式:
自定义客户端请求场景
如果是你自己手动写fetch调用后端接口,直接在请求头里指定Content-Type就行:
async function invokeServerFn(data) { const response = await fetch('/path/to/your/server-fn', { method: 'POST', headers: { 'Content-Type': 'application/json;charset=utf-8', 'Accept': 'application/json' }, body: JSON.stringify(data) }); return response.json(); }
框架内置Server函数场景(比如Next.js Server Actions)
像Next.js的Server Actions这类框架内置的服务端函数调用,默认会用text/plain的Content-Type——因为它的请求体是框架封装过的特殊格式。如果一定要换成application/json,有两个思路:
- 放弃内置的Server Action调用,改用自定义API路由,然后按上面的方法手动设置请求头
- 如果非要用Server Action,只能在服务端兼容解析:把请求体当成文本读取后再转JSON,但这属于反向适配,不如直接用API路由来得顺畅
通用注意事项
改完客户端的Content-Type后,必须确保服务端对应调整解析逻辑:比如Node.js/Express里要启用express.json()中间件,而不是express.text();如果是其他后端语言,也要改成解析JSON格式的请求体,否则会出现数据解析失败的问题。
内容的提问来源于stack exchange,提问作者Miguelii
相关产品推荐
相关产品推荐

