发生MultipartException时,spring global cors配置不起作用

时间:2017-03-29 03:55:05

标签: spring spring-mvc cors

今天我的Web应用程序中出现了MultipartException。我的Web应用程序基于spring boot。但我在处理MultipartException期间发现了这个问题。这是MultipartException信息:

  

org.springframework.web.multipart.MultipartException:无法解析   多部分servlet请求;嵌套异常是java.io.IOException:

     

临时上传位置   [C:\用户\ PC \应用程序数据\本地\ TEMP \ tomcat.3024954041352048338.8082 \工作\ Tomcat的\本地主机\ dutyManage]   无效

我配置了常见的异常处理程序,它将处理我的应用程序中的异常并返回json数据。

问题是http响应不包含类似“访问控制 - 允许 - 来源”的头部。所以我猜春季全球角色配置不起作用。这是响应头信息:

Connection:close
Content-Type:application/json;charset=UTF-8
Date:Wed, 29 Mar 2017 03:30:51 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked

我故意在控制器的相同方法中抛出一个新的RuntimeException,cors配置工作,http响应包含' Access-Control-Allow-Origin'的头部。

我的春季全球角色配置是这样的:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
// ...
@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedOrigins(corsIps)
            .allowedMethods(corsMethods)
            .allowedHeaders(corsHeaders)
            .maxAge(3600);
    }
}

那么为什么cors配置不适用于发生MultipartException的情况?

1 个答案:

答案 0 :(得分:0)

建议通过spring(或服务器)配置为临时存储指定自定义目录路径。

但是快速攻克方法是创建所提到的目录并提供读/写权限为

mkdir -p C:\Users\PC\AppData\Local\Temp\tomcat.3024954041352048338.8082\work\Tomcat\localhost\dutyManage

chmod 755 C:\Users\PC\AppData\Local\Temp\tomcat.3024954041352048338.8082\work\Tomcat\localhost\dutyManage

tomcat.xxxxxxxxxxxx.xxxx-每个服务器上都不同。 从服务器错误中使用此目录名称。