当前位置: 首页 > 知识库问答 >
问题:

HTTP状态405-请求方法“POST”不支持Spring MVC

锺伟志
2023-03-14

该场景是用户选择一些产品,然后单击进行支付。在这里,我将他/她重定向到IPG(银行互联网支付网关),并在付款完成和定稿时传递我的返回url。在我添加spring security之前,一切正常。

但是如果在一些内部视图中发布这个url,一切都会恢复正常。

这是正常工作(spring security启用,一切正常)

<form:form method="post" name="saleform" id="saleform"
    action="http://localhost:8080/Click2Pay/salecomplete">
    <input class="btn btn-primary" type="submit" value=" SaleComplete "
        id="btnsalecomplete" name="btnsalecomplete" />

</form:form>


    @RequestMapping(value = "/salecomplete", method = RequestMethod.POST)
        public String salecomplete(HttpServletRequest request,
                HttpServletResponse response, Model m)
                throws
<http auto-config="true" use-expressions="true">
        <intercept-url pattern="/admin/**" access="hasRole('admin')" />
        <access-denied-handler error-page="/403" />
        <form-login login-page="/login" default-target-url="/admin/admin"
            authentication-failure-url="/login?error" username-parameter="username"
            password-parameter="password" />
        <logout logout-success-url="/login?logout" />
        <!-- enable csrf protection -->
        <csrf />
    </http>



<authentication-manager>
        <authentication-provider user-service-ref="UserAuthenService">
            <password-encoder hash="sha" />
        </authentication-provider>
    </authentication-manager>

在浏览器中查看银行IPG的来源(https://pna.shaparak.ir/CardServices/paymentSuccess.html)

<form action="http&#x3a;&#x2f;&#x2f;localhost&#x3a;8080&#x2f;Click2Pay&#x2f;salecomplete"
    method="post" autocomplete="off">
    <div class="commandBar">

            <input type="hidden" name="redirectURL" id="redirectURL"
                value="http&#x3a;&#x2f;&#x2f;localhost&#x3a;8080&#x2f;Click2Pay&#x2f;salecomplete" />

            <input type="hidden" name="MID" id="MID" value="01134254" />

            <input type="hidden" name="ResNum" id="ResNum" value="162" />

            <input type="hidden" name="RefNum" id="RefNum"
                value="00000000021278797788" /> <input type="hidden"
                name="CustomerRefNum" id="CustomerRefNum" value="421320082083" />


            <input type="hidden" name="State" id="State" value="OK" /> <input
                type="hidden" name="language" id="language" value="fa" /> <input
                type="hidden" name="CardPanHash" id="CardPanHash"
                value="417bf6657c3830d051b4e9bab45203508c386787d4c083244c4dbac82bd559b8" />
            <input type="submit" value="تکمیل خرید"
                class="button btn btn-success btn-lg" name="Submit" />

            <input type="button" value="لغو خرید"
                class="button btn btn-default btn-lg" name="cancelButton"
                id="cancelButton" onclick="document.forms['returnForm'].submit();" />

    </div>

    </form>

有什么问题?

共有1个答案

左丘宜年
2023-03-14

如果银行网站正在发回您的申请,则这是跨网站请求,银行需要csrf令牌,该令牌不在银行的表格中。尝试临时禁用csrf保护以进行验证。

解决办法是:

>

  • 如何将CSRF令牌传递到银行的表单
  • 通过为csrf受保护的url提供自定义请求匹配器来禁用该特定请求的CSRF保护:

    完全关闭CSRF保护(这会使其正常工作,但会使应用程序易受CSRF攻击)

  •  类似资料:
    • 问题内容: 我收到此错误: 我正在尝试做的是创建一个带有下拉框的表单,该表单会根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应运行.jsp页面中的函数,然后提交提交的页面,然后在框中再次加载相应的值。 但是我收到此HTTP状态405错误。我在互联网上搜索了解决方案,但找不到任何有帮助的方法。这是我的代码的相关部分: jsp页面的一部分 控制器的一部分: 我怎么会得到这个

    • 我收到这个错误:< code>HTTP状态405 -不支持请求方法“POST ” 我想做的是创建一个带有下拉框的表单,该下拉框根据在另一个下拉框中选择的其他值进行填充。例如,当我在框中选择一个名称时,应该运行. jsp页面中的函数,然后提交的页面再次加载框中的相应值。 但是我收到此HTTP状态405错误。我已经在互联网上搜索了解决方案,但找不到任何有帮助的东西。以下是我的代码的相关部分: jsp页

    • 我有Spring MVC的Spring Security。当我尝试注册时,它给了我405个不支持的“帖子”。我已在安全配置中禁用csrf令牌。让我知道我哪里出错了? 我的登录页面: 授权由LoginController处理: 这是我的Spring Security配置类:

    • 当我尝试实现Spring Security性时,出现以下错误- 控制器: web.xml Spring-security.xml 登录名。jsp 错误:- http://localhost:8080/EmployeeManagement/j_spring_security_check

    • 我对Spring MVC项目有问题,当我尝试在控制器中调用post方法时,我得到“HTTP状态405-请求方法'POST'不支持”。我没有使用Spring安全。返回“index”是base jsp,并基于“view”属性更改视图。有人能找到我做错了什么? 控制器: JSP: 窗体对象:

    • 我使用的是Spring MVC(4.1.6 RELEASE)和Spring Security(4.0.1 RELEASE)。 当我尝试提交我的登录表单时,我收到“HTTP状态405-不支持请求方法'POST'”错误。 web.xml spring-security.xml form.html