调用Azure上的REST API时POST请求出现415不支持媒体类型错误
解决Azure REST API POST请求返回415 Unsupported Media Type的问题
我来帮你排查这个头疼的415错误,这种情况大多是请求的格式细节没处理到位,咱们一步步拆解问题:
先检查最容易踩坑的两个点
1. 确认Content-Type的拼写和大小写
你提到设置了Application/json,但HTTP标准里的MIME类型是小写的application/json。虽然部分服务器兼容大写,但Azure的API服务(比如API Management、Function App)对MIME类型的大小写可能比较严格,建议你把请求头改成:
headers: { 'Content-Type': 'application/json', // 若API需要授权,记得加上对应的Authorization头 }
2. 务必把JavaScript对象序列化为JSON字符串
很多人会犯的错:直接把JS对象传给请求body,而没有用JSON.stringify()转换。服务器需要的是纯JSON字符串,不是JS对象。比如:
❌ 错误写法:
body: { name: "test", value: 123 } // 直接传JS对象
✅ 正确写法:
body: JSON.stringify({ name: "test", value: 123 }) // 转成JSON字符串
完整的componentDidMount示例代码
这里给你一个标准的请求写法,你可以对照调整:
componentDidMount() { // 定义要传递的JS对象 const requestData = { userId: 123, action: "submit", details: { key: "value" } }; fetch("https://your-azure-api-endpoint-url", { method: "POST", headers: { "Content-Type": "application/json", // 如果API需要身份验证,这里添加对应的头,比如: // "Authorization": "Bearer " + yourAccessToken }, body: JSON.stringify(requestData) }) .then(response => { if (!response.ok) { throw new Error(`请求失败:${response.status} ${response.statusText}`); } return response.json(); }) .then(data => { console.log("请求成功,返回数据:", data); // 处理返回数据的逻辑 }) .catch(error => { console.error("请求出错:", error); }); }
进一步排查技巧
如果上面的调整还是没解决问题,你可以用浏览器开发者工具(Network标签)确认:
- 找到这个POST请求,查看Request Headers里的
Content-Type是否确实是application/json(有没有被框架或库覆盖) - 查看Request Payload,确认发送的是有效的JSON字符串(没有语法错误,比如多余的逗号)
检查Azure端配置
如果前端请求确认没问题,那可能是Azure API的配置问题:
- 如果是Azure Functions,检查
function.json里的binding是否设置了正确的contentType - 如果是API Management,确认API的操作策略允许接受
application/json类型的请求
内容的提问来源于stack exchange,提问作者user8589034
相关产品推荐
相关产品推荐

