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

使用fetch()请求返回[object Response],无法解析JSON求助

问题原因及解决方案

你的问题根源在于设置了mode: 'no-cors',这个配置会让浏览器返回不透明响应(opaque response),这种响应受浏览器安全策略限制,无法读取任何内容——这就是为什么你用response.json()会报错,response.text()也拿不到有效数据,直接打印response会显示[object Response]。

而Postman不属于浏览器环境,不受CORS策略约束,所以能正常获取接口返回的JSON数据。

解决步骤:

  • 第一步:移除mode: 'no-cors'配置
    删掉fetch选项里的mode: 'no-cors',默认的cors模式会自动处理跨域请求(前提是后端已经配置了正确的CORS响应头,比如Access-Control-Allow-Origin)。修改后的代码:
    try {
        let response = await fetch(
            `https://us-central....`,
            {
                method: 'post',
                body: JSON.stringify(customer),
                headers: {
                    'Content-Type': 'application/json' // 建议添加,明确告诉后端请求体格式
                }
            }
        )
    
        if (!response.ok) {
            throw new Error(`HTTP错误!状态码: ${response.status}`); // 处理4xx/5xx错误
        }
    
        let data = await response.json()
        console.log('响应数据:', data)
    
    } catch (e) {
        console.error('请求错误: ', e)
        return e
    }
    
  • 第二步:确保后端配置CORS
    如果移除mode: 'no-cors'后出现CORS错误,需要后端在响应头中添加必要配置:
    • Access-Control-Allow-Origin: *(开发环境可临时用,生产环境建议指定具体域名)
    • Access-Control-Allow-Methods: POST(允许POST请求方法)
    • Access-Control-Allow-Headers: Content-Type(允许携带Content-Type头)
  • 若后端无法修改CORS配置
    开发环境可通过Webpack DevServer的proxy配置转发请求,生产环境用Nginx反向代理,绕过浏览器的CORS检查。

补充说明:

no-cors模式仅适用于不需要读取响应内容的场景(比如加载第三方静态资源),如果你需要获取接口返回的数据,绝对不能使用这个模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:24:48