前端使用mui框架发送ajax,设置请求类型为json格式,后端的service使用@PreAuthorize("isAuthenticated()")注解进行是否登录的校验,当用户匿名时(未登录),Spring security框架会返回登录页面,xml配置如下:
<!-- 过滤器配置 -->
<http pattern="/login.jsp*" security="none" /> <!-- 不过滤此URL -->
<http auto-config="true">
<!-- 要保护的URL,只有拥有 ROLE_USER角色的用户才能访问 -->
<form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=1"/>
<remember-me />
</http>
而在实际测试过程中没有实现页面跳转,浏览器的控制台提示:
"parsererror" SyntaxError: Unexpected token < in JSON at position 2
at Function.parse [as parseJSON] (<anonymous>)
at XMLHttpRequest.u.onreadystatechange (mui.min.js:7)
之前使用jquery的ajax发送请求时并没有出现这个问题,应该怎么解决?
F12调试,看看 Network 面板的Ajax请求,看看返回的数据是什么。
另外,给你一个建议:login.jsp 搞成自动根据请求Header判断是否 Ajax 请求决定返回的内容:JSON 或 HTML 。
参考文章,如何判断 Ajax 请求:http://blog.csdn.net/lixld/article/details/52353276
上面的逻辑简单在 JSP 里面暴力写一写,输出 JSON 或者原封不动的输出 HTML 就可以啦。