Ajax POST导致405(方法不允许) – Spring MVC
我正在尝试用POST方法对我的
Spring控制器/动作进行ajax调用,并使用@ResponseBody从服务器返回一个对象.奇怪的情况是它在添加spring安全层后停止工作,之前一切正常.我将尝试解释我解决问题的步骤,然后向您展示代码/捕获/等.
1. 2. 3. 4. 5. 这真让我抓狂!我发布我的文件,所以你可以检查它们,任何提示将不胜感激.谢谢! (重要说明:这是我的绝望配置) 弹簧security.xml文件 <beans:beans xmlns...(all needed declarations)> <http pattern="/js/**" security="none" /> <http pattern="/css/**" security="none" /> <!-- enable use-expressions --> <http auto-config="true" > <access-denied-handler error-page="/403" /> <intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" /> <intercept-url pattern="/login" access="isAnonymous()" /> <intercept-url pattern="/403" access="permitAll" /> <intercept-url pattern="/**" access="hasRole('ROLE_USER')" /> <form-login login-page="/login" username-parameter="email" password-parameter="password" authentication-failure-url="/login?failed" /> <!-- <csrf/> --> </http> ..... (authentication) AdminController.java @Controller @RequestMapping("/admin**") public class AdminController { ... (all my autowired beans) @RequestMapping( value = "/events/loadEvents",method = RequestMethod.POST,consumes = MediaType.ALL_VALUE,produces = MediaType.ALL_VALUE,headers = "Accept=*/*") @ResponseBody public Event loadEvents(@RequestParam("parentId") long parentId) { ... (my logic) return event; } } 请求(wireshark捕获) 响应(wireshark捕获) 编辑 $.ajax({ type: 'POST',cache: false,url: /admin/events/loadEvents,data: { parentId: 1 },dataType = 'json',contentType = 'application/json',... }); 解决方法
经过几个小时的研究和测试,我终于明白了,蚂蚁是一个(非常非常)愚蠢的情况.所以,在我的问题中,我说
不,我没有禁用它.我试图禁用它 <!-- <csrf/> --> 但我应该这样做: <csrf disabled="true"/> 注释csrf标签不会禁用csrf,这是因为默认情况下启用了csrf!找到问题后很容易说这是一个愚蠢的错误,但是当我添加csrf标签来启用它时,我认为评论它会禁用它.在Spring Documentation找到答案 现在,回到我的问题.要使用CSRF ENABLED在POST AJAX调用中修复405错误消息,这非常简单.我将csrf参数保存在JS变量中,如下所示: <script type="text/javascript"> var csrfParameter = '${_csrf.parameterName}'; var csrfToken = '${_csrf.token}'; </script> 然后我的ajax调用看起来像这样: var jsonParams = {}; jsonParams['parentId'] = 1; jsonParams[csrfParameter] = csrfToken; $.ajax({ type: 'POST',data: jsonParams,... }); 像魅力一样工作.希望将来帮助某人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |