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

Axios POST请求未添加Content-Type报415错误,请求格式是否正确?

Axios POST请求Content-Type不显示及415错误的解决方法

你的请求格式存在两个关键问题,直接导致了Content-Type不生效和415状态码错误:

问题根源

  1. 手动设置multipart/form-data干扰Axios自动处理
    Axios处理文件上传时,若检测到请求数据是FormData类型,会自动生成带boundary分隔符的Content-Type(比如multipart/form-data; boundary=----WebKitFormBoundaryxxx)。但你手动硬编码了Content-Type却未添加boundary,服务器无法解析表单结构,直接返回415;同时这种手动设置还可能被Axios内部逻辑覆盖,导致请求头里看不到该字段。

  2. 文件数据未包装成FormData对象
    你直接把{file: file}作为data传入,这是普通JS对象,Axios不会识别为表单数据,自然也不会触发自动设置Content-Type的逻辑。

修复后的代码

let api_post_request = async (resourcePath, params, file, options) => {
    let headers = {
        ...getAccessToken() // 保留Bearer令牌的Authorization头
        // 移除手动设置的Content-Type,让Axios自动处理
    };
    let requestData = {};
    
    // 处理文件:包装成FormData对象
    if (file) {
        const formData = new FormData();
        formData.append('file', file);
        requestData.data = formData;
    }
    
    // 处理URL参数:空值时传空对象而非空字符串
    if (params) {
        requestData.params = params;
    }

    try {
        await axios({
            method: 'post',
            headers: headers,
            baseURL: `${Constants.PATH.BASE_URL}`,
            url: `${resourcePath}`,
            ...requestData
        });
    } catch (error) {
        // 建议添加错误处理,便于排查请求失败细节
        console.error('请求失败:', error.response?.data || error.message);
    }
};

额外说明

  • 使用FormData时,Axios会自动添加正确的Content-Type头(包含boundary),此时网络面板就能看到完整的Content-Type字段。
  • 原代码中...(params ? { params: params } : "")的写法存在隐患,空字符串不是合法的对象展开值,改为判断后传空对象更安全。
  • 415错误本质是服务器无法识别请求的媒体类型,修复Content-Type和请求数据格式后即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:29:31