小编rmp*_*mpt的帖子

Ajax POST导致405(方法不允许) - Spring MVC

我试图做一个AJAX调用我的春节控制器/用POST方法的行动,并从服务器返回@ResponseBody的对象.奇怪的情况是它在添加spring安全层后停止工作,之前一切正常.我将尝试解释我解决问题的步骤,然后向您展示代码/捕获/等.

经过一些研究后,我发现了一些答案,说明问题可能与csrf机制有关,所以我禁用了它,但仍然存在问题.(spring-security.xml bellow)

我已经做了一个wireshark捕获来检查请求/响应.我的ajax请求没问题,我的控制器声明没问题,但我不明白为什么,405响应指示> 允许:GET(捕获波纹管)

3.我试图通过浏览器访问我的控制器操作(即发出GET请求),我收到错误HTTP状态405 - 不支持请求方法'GET'!

4.我试图将RequestMapping(方法...)更改为RequestMethod.GET,并且请求到达控制器并且工作正常,但我不希望它在GET方法上工作,我想要一个POST请求.

5.更改了RequestMapping(使用,生成,标题)以接受所有类型的数据,但仍然是405 ...

这真让我抓狂!我发布我的文件,所以你可以检查它们,任何提示将不胜感激.谢谢!(重要说明:这是我的绝望配置)

弹簧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)  
Run Code Online (Sandbox Code Playgroud)

AdminController.java

@Controller
@RequestMapping("/admin**")
public class AdminController {

    ... (all my autowired beans)

    @RequestMapping(
        value …
Run Code Online (Sandbox Code Playgroud)

ajax post spring-mvc spring-security http-status-code-405

5
推荐指数
1
解决办法
1万
查看次数