使用curl发送DELETE接口请求返回原始HTML与JavaScript内容问题求助
问题排查及解决方法
- 缺失指定响应格式的请求头
多数前后端同构的服务会优先对未声明接收格式的请求返回前端页面内容,你需要在curl命令中添加Accept头指定接收JSON格式的响应,修改后的命令如下:
curl -X DELETE "http://localhost:3000/api/v1/internal/items/209?api_token=uabsubsfasjbbaljbd" -H "Accept: application/json"
- 权限校验未通过触发跳转
如果api_token过期、无效或者当前账号没有该接口的DELETE操作权限,服务端会重定向到登录页面,返回的内容自然是HTML代码。你可以添加-v参数查看完整请求链路,确认返回的HTTP状态码:
curl -v -X DELETE "http://localhost:3000/api/v1/internal/items/209?api_token=uabsubsfasjbbaljbd"
如果返回状态码为301/302/401,优先校验token有效性和账号权限。
- HTTP请求方法大小写不匹配
部分严格的服务端框架仅识别大写的HTTP请求方法,你用到的小写-X delete写法可能不被识别,服务端会将请求判定为GET方法,最终匹配到前端的兜底路由返回页面。后续请求统一使用大写的-X DELETE写法即可。 - 接口路由配置变更
如果近期调整过服务端路由规则,原API路径可能已经被修改,当前请求路径匹配到了前端页面路由,就会返回HTML内容。可以先确认对应DELETE接口的路径是否和你请求的路径一致。
内容的提问来源于stack exchange,提问作者tsuko
相关产品推荐
相关产品推荐

