小结——联调常见问题
400报错,请求无效 (Bad request)
原因:
1.前端提交数据的字段名称或者是字段类型和后台的实体类不一致 或 前端提交的参数跟后台需要的参数个数不一致,导致无法封装;
2.前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;
解决方案:
1.对照字段名称,类型保证一致性
2.使用stringify将前端传递的对象转化为字符串 data: JSON.stringify(param) ;
如果前端确保了自己传参的字段和后端匹配,也都是传的值都是字符串,还是报400的话,就问一下后台接口的字段是否更改过,编译成功没。经验告诉我,也可能是后台更改接口代码时没编译成功,导致请求错误,所以双方都确认一下,经历过被刷锅,陪后端一起解决了过这个问题。(与没有写过接口实习生的交手,就多操了心点)
404报错,资源路径找不见
原因:
1.改请求路径找不见对应的资源
解决方案:
1.请求路径要与后端的接口路径保持一致
不是什么大问题,要不是前端请求路径不对,要不就后台接口不存在,没神魔讲的。
500报错,错误的出现的原因有很多,但你要知道,500错误是服务器内部错误
原因:
1.ASP语法出错、ACCESS数据库连接语句出错、文件引用与包含路径出错(如未启用父路径)、使用了服务器不支持的组件如FSO等
解决方案:
1.后台可检查下服务器语句错误问题。
报500与前端无关,你要知道。500的后端可超控,但如果有“密码已账户不匹配”的错误信息提示在500里返回给前端,这个不应该,因为这个是ajax请求成功的,只是用户输入有误导致,应该在200里返回。这个应该告诉后台这个问题,让他改改,虽然不是前端问题,也不影响用户正常操作,但是需要返回200的在500里返给你,控制台会报错,看着也不舒服,有问题要解决啊~
跨域报错,XMLHttpRequest cannot load.................
原因:
1.同源策略的限制。
解决方案:
1.JSONP、Nginx服务器代理、CORS。在这就不做解释了,文章有很多,可以自己搜一下。
注意:JSONP只能发GET请求,CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing)跨域资源共享 CORS 详解。看名字就知道这是处理跨域问题的标准做法。在这推荐一下,只是了解看过一点点后台的代码
后端可以在过滤器或拦截器中加以下代码:
// 允许所有,*时cookie不会在http请求中带上
ctx.set('Access-Control-Allow-Origin', '*')
// 也可以指定,如果需要http请求中带上cookie,需要前后端都设置credentials,且后端设置指定的origin
ctx.set('Access-Control-Allow-Origin', 'http://localhost:9099')
前端什么也不用干,就是正常发请求就可以,如果需要带cookie的话,前后端都要设置一下。
后端的跨域处理可转接:https://blog.csdn.net/yue29026/article/details/70860719。