为了账号安全,请及时绑定邮箱和手机立即绑定

SpringMVC: 拦截器Interceptor preHandle()返回false,为何HTTP返回码是200?

SpringMVC: 拦截器Interceptor preHandle()返回false,为何HTTP返回码是200?

慕尼黑8549860 2019-05-23 16:31:23
HTTP返回码是200让前端觉得是成功的啊,这种状况前端如何检测?譬如前端是ajax调用,dataType=“json”时,怎么办?判断data是否为null?$.ajax({url:"${ctx}/dict/add",type:"post",dataType:"json",//contentType:"application/json",async:false,data:{csrfToken:function(){return$("#csrfToken").val();},bookStore:bookStore},success:function(data){if(data==null){//这里判断data==null?BTW:contentType为"application/json",是不是data只能是一个json对象,而不能出现如上所示的状况?
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

如果你想返回其他状态码只需要在return前设一下就好.
......
response.setStatus(405)//可以用response.getWriter()返回json或你想要的格式,同时设置header:Content-Type:text/json
returnfalse;
                            
查看完整回答
反对 回复 2019-05-23
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

谢邀
正常请求,正常响应,200是正常的
你想要怎么判断?我举个栗子吧:
我的一个拦截器(判断用户是否登录):
@Override
publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{
//session是否存在用户信息
UserInfouserInfo=(UserInfo)request.getSession().getAttribute("LOGIN_USER");
if(userInfo==null){
//异步请求返回
AsynchronousResultresult=newAsynchronousResult();
result.setMessage("test");
response.setContentType("application/json;charset=UTF-8");
response.getWriter().print(SerializeUtil.serialize(result));
returnfalse;
}
returntrue;
}
AsynchronousResult对象是什么呢?
publicclassAsynchronousResultimplementsSerializable{
privatestaticfinallongserialVersionUID=-1072103465426536854L;
/**
*结果
*/
privateStringresult="fail";
/**
*消息
*/
privateStringmessage;
/**
*获取结果
*/
publicStringgetResult(){
returnthis.result;
}
/**
*设置结果
*/
publicvoidsetResult(Stringresult){
this.result=result;
}
/**
*获取消息
*/
publicStringgetMessage(){
returnthis.message;
}
/**
*设置消息
*/
publicvoidsetMessage(Stringmessage){
this.message=message;
}
}
相信你应该明白了,我异步请求,如果没登录,返回了一个AsynchronousResult对象,且这个对象的result属性是fail.那么前端怎么处理呢?:
ajax({
url:"/test,
type:"POST",
data:requestDate,
success:function(res){
if(res.result==='success'){
//dosothing
}else{
//返回的res.result是fail,这里处理。
}
}
});
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 774 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号