You need to enable JavaScript to run this app. Fetch发送POST请求返回415 Unsupported Media Type(Postman正常)
优惠活动
大模型
产品
解决方案
定价
更多

Fetch发送POST请求返回415 Unsupported Media Type(Postman正常)

415 Unsupported Media Type 问题排查与修复

核心触发原因:no-cors 模式篡改了请求头

  • 你在请求配置里加的mode: "no-cors"是最直接的问题来源:这是浏览器针对跨域请求的严格受限模式,该模式下浏览器不允许前端发送非“CORS安全列表”内的请求头,Content-Type: application/json就不属于安全可携带的类型范围。
  • 浏览器会自动把你手动设置的Content-Type值强制替换为text/plain;charset=UTF-8。Klaviyo的服务端收到请求时,检测到请求的媒体类型和接口要求的JSON格式不匹配,就会直接返回415错误。
  • 你可以打开浏览器开发者工具的网络面板,找到这个请求的实际请求头参数,就能看到被篡改后的Content-Type值,和你代码里设置的并不一致。

其余干扰请求的无效/错误配置

  • Access-Control-Allow-Origin本质是服务端返回给浏览器的响应头,不属于前端可以在请求中携带的字段,手动在请求里加这个头没有任何实际作用,还可能触发浏览器的安全校验拦截。
  • 代码中头部写入的xxxxx_api_key值为空字符串,既没有实际鉴权作用,也和Postman里的可运行请求逻辑不匹配——Klaviyo的这个v2接口本身就要求api_key放在请求体中,不需要单独在头部做鉴权。
  • no-cors模式本身就不适合调用需要JSON交互的第三方接口:哪怕请求发出去了,前端JS也没有权限读取接口返回的响应内容,完全没法完成正常的业务逻辑处理。

可正常运行的调整步骤

  1. 从requestOptions配置里删除mode: "no-cors",走默认的正常CORS请求模式,保证你手动设置的Content-Type: application/json头不会被浏览器篡改
  2. 删除无效的Access-Control-Allow-Origin请求头
  3. 删除空值的鉴权头部字段,保持和Postman请求体里的参数结构完全一致
  4. 如果调整后依然遇到跨域报错,不要靠开启no-cors绕开限制,可以通过本地开发代理、后端中转转发的方式完成跨域请求,no-cors模式从根本上就无法正常处理JSON格式的POST交互。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 17:45:01