首页 > 解决方案 > Angular 和 Spring MVC - Post 方法的问题 - 415 不受支持的媒体

问题描述

我有以下 Spring API:

@CrossOrigin(origins = "http://localhost:4200", allowCredentials = "true", maxAge = 3600)
@RequestMapping(value = "/seanPost", method = RequestMethod.POST, headers = "Content-Type=application/json")
public  JSONObject post(@RequestBody TrackFileStatusFindForm form, HttpServletRequest request ) {
    

当我使用邮递员对其进行测试时,它工作正常。

在我的测试 Angular 应用程序中,我通常会收到错误 Error 415--Unsupported Media Type。我注意到 angular 将 Content-Type 设置为 text/plain 而 Postman 设置 Content-Type: application/json

我尝试在 Angular 中设置标头,如下所示,但随后出现 CORS 问题阻止请求,并且在开发工具中出现 401 未授权错误。

options = {
headers: new HttpHeaders()
    .set('Content-Type', 'application/json')
    
  };

onSubmit() { 

this.http.post(this.APP_URL + '/s/seanPost/', JSON.stringify(this.model), this.options)
.subscribe(
    data => {
        this.postId = data;
        console.log(this.postId);
    },
    error => {
    console.log('Error occured', error);
  }
)

}

我尝试将 CORS 过滤器添加到 SpringMVCConfig

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS")
            .allowedOrigins("http://localhost:4200")
            .allowedHeaders("Authorization", "Cache-Control", "Content-Type", "Accept", "X-Requested-With", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Origin")
        .exposedHeaders("Access-Control-Expose-Headers", "Authorization", "Cache-Control", "Content-Type", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Origin");

}

但这似乎没有帮助。

如果有帮助,REST URL 是 https。

谢谢

标签: angularspringrestspring-mvc

解决方案


推荐阅读