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

SpringCSRF多部分不工作

林浩漫
2023-03-14

Spring CSRF不适用于带有文件上传的多部分表单。它适用于其他请求。我的web.xml如下所示-

<filter>
        <filter-name>MultipartFilter</filter-name>
        <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>MultipartFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
...
some more filters
...
<filter>
        <filter-name>csrfFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>csrfFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

我已经在appcontext servlet中定义了这个bean。xml-

<bean id="filterMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="100000000" />
    </bean>

我还定义了csrfFilter。定义了filterMultipartResolver bean后,我被重定向到默认的404页面。如果没有bean,我会得到一个错误页面,说我发送了一个空令牌。当我在chrome developer tools中看到该请求时,它包含以下部分以及表单的其余部分(令牌已附加两次,因为我正在使用javascript执行此操作,一次是在页面加载时,一次可能是在发送时。我缺少什么?

------WebKitFormBoundaryHMYSQ8eg6FXpxqDA内容配置:表单数据;name=“\u csrf”

16a983e0-a115-43d9-aa72-09c9576d53df ------WebKitFormBoundaryHMYSQ8eg6FXpxqDA内容配置:form-data; name="_csrf"

16 a 983 e 0-a 115-43 d 9-a 72-09 c 9576 d 53 df

共有1个答案

壤驷麒
2023-03-14

我不知道您是否已经解决了这个问题,但即使是我也遇到了与您相同的问题,包括类似的代码。我的唯一区别是:

<filter>
    <display-name>springMultipartFilter</display-name>
    <filter-name>springMultipartFilter</filter-name>
    <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>springMultipartFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>csrfFilter</filter-name>
    <servlet-name>customApplication</servlet-name>
</filter-mapping>
<servlet>
    <servlet-name>customApplication</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>customApplication</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
 类似资料:
  • 我们正在尝试通过多部分文件上传过程上传文件。通过使用下面给出的代码: //4.完成多部分上传。 通过使用此代码,文件被转换成多部分,但不可用于上传文件。它通过print_r显示这种类型的错误: 上传 /tmp/phplA534j.第2部分 正在上载/tmp/phplA534j的第3部分。 你能帮帮我吗?

  • 为了解决这个问题,我还添加了一个MultipartResolver 很可能是一些愚蠢的东西,但我找不到我错过的东西。

  • 我试图执行一个对jaxrs服务的请求,该服务的媒体类型设置为。这个请求包含一个实体列表(xml)和一个映像(png,二进制)。我已经通过Balusc创建了这个线程中描述的请求。 在wireshark中检查后,请求似乎可以,除了ip头校验和错误之外。(表示“可能是由ip校验和卸载引起的”) 我这里最大的问题是如何在服务端处理多部分请求。我不希望包含Apache.cxf、resteasy或任何类似的库

  • 问题内容: 这并不是一个真正的问题,但是,我想在这里共享我的一些工作代码,以供您在需要时参考。 众所周知,自API22起已弃用该方法,并自API23起将其完全删除。目前,我们无法再在Android Developer上访问HttpEntity Reference(404)。因此,以下是我在带有Volley且没有HttpEntity的POST Multipart Request中工作的示例代码。工作

  • 我需要关于使用PHP5.3上传AWS多部分的帮助,我使用的是1.WAMP服务器。2.PHP 5.3 3.操作系统:Windows 8我正在尝试将一个大文件上传到My Amazon S3存储桶。 尝试了很多方法。我按照http://docs.aws.amazon.com/AmazonS3/latest/dev/LLuploadFilePHP.html的代码程序 我写了PHP代码,但我不知道我犯了什么

  • 我试图实施ProLoser在我的Plunk链接中提供的解决方案。我的问题是,每当我按下链接而不是打开链接下方的子视图时,它就会覆盖整个视图。 我需要明白如何解决这个问题。 我的流程是这样的:- 我的布局: 指数html: 所容纳之物html: 我的代码: