前端调用接口404报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端调用接口404报错相关的知识,希望对你有一定的参考价值。
咨询一个问题,我的前端和后端都部署在一个服务器a上,然后前端调后端接口没有问题的……把前端放到另外的服务器b上然后调后端(还是在服务器a上)接口就404报错了,可能原因是什么
参考技术A 今天遇到了一个很离奇的场景,使用ajax请求后台结果 后台处理成功了页面还报了404错误。程序员不说话,默默上代码:
JS:
[javascript] view plain copy
var save = function()
$.ajax(
url: urlMap.saveOrUpdateGroupInfo,
type: 'post',
async: false,
dataType: 'json',
data: $("#groupInfo").serialize()
).done(function(res)
console.log(res);
if(res.success)
else
bootbox.alert(res.msg);
);
后端:
[java] view plain copy
@RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST)
public ResponseVo saveOrUpdate(String id, String name, String parentId, String parentName, String operate)
ResponseVo result = new ResponseVo();
GroupInfo info = new GroupInfo();
Date now =new Date();
info.setUpdateTime(now);
try
if(operate.equals("add"))
info.setParentId(Integer.parseInt(parentId));
info.setName(name);
info.setCreateTime(now);
groupInfoService.addGroup(info);
else if (operate.equals("edit"))
info.setId(Integer.parseInt(id));
info.setName(name);
info.setParentId(Integer.parseInt(parentId));
groupInfoService.updateGroup(info);
else if (operate.equals("delete"))
groupInfoService.deleteGroup(Integer.parseInt(id));
result.setSuccess(true);
catch (Exception e)
log.error("operate group error."+ JsonUtil.toString(info), e);
result.setSuccess(false);
result.setMsg(e.getMessage());
return result;
挺奇怪吧?
经分析是请求没有返回状态码,这是因为我用的是SpringMVC框架,前后端使用JSON传递数据,因为返回的是对象,而忘记了添加
@ResponseBody
注解,所以 Spring对我的返回值进行了映射,但是映射结果又对应不到视图,所以返回了404
正常后台代码:
[java] view plain copy
@RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST)
@ResponseBody
public ResponseVo saveOrUpdate(String id, String name, String parentId, String parentName, String operate)
ResponseVo result = new ResponseVo();
GroupInfo info = new GroupInfo();
Date now =new Date();
info.setUpdateTime(now);
try
if(operate.equals("add"))
info.setParentId(Integer.parseInt(parentId));
info.setName(name);
info.setCreateTime(now);
groupInfoService.addGroup(info);
else if (operate.equals("edit"))
info.setId(Integer.parseInt(id));
info.setName(name);
info.setParentId(Integer.parseInt(parentId));
groupInfoService.updateGroup(info);
else if (operate.equals("delete"))
groupInfoService.deleteGroup(Integer.parseInt(id));
result.setSuccess(true);
catch (Exception e)
log.error("operate group error."+ JsonUtil.toString(info), e);
result.setSuccess(false);
result.setMsg(e.getMessage());
return result;
追问
不是这个原因吧
Django REST Framework -- REST API 报错:403
问题描述
前端同事反馈,调用REST API 的 delete 方法时,返回403 跨域错误。。。
问题重现
使用postman模拟前端测试。直接调用接口,返回如下错误:
{ "detail": "Authentication credentials were not provided." }
在网上搜罗了一下,发现需要在http header 里面放入X-CSRFToken, 配置如下图所示:
修改配置后,再次调用接口,返回成功!!
分析回溯
在确定服务端没有问题后,与前端同事一起review了一下代码,发现使用axios时,delete 和 post 、put 的参数不一样,post、put都有三个参数,分别为url、data还有config,而delete只有两个参数,第一个是url,第二个是config。
修改前端代码后,一切恢复正常~
参考
https://blog.csdn.net/qq383366204/article/details/80268007
https://blog.csdn.net/weixin_43336281/article/details/105956109
以上是关于前端调用接口404报错的主要内容,如果未能解决你的问题,请参考以下文章
EasyNVR调用接口访问EasyNVS报错404是什么原因?