将multipart / form-data Spring Controller传递给外部端点

时间:2017-10-24 11:16:10

标签: java spring spring-mvc proxy

我有一个问题。我试图代理传递我的表单提交到防火墙后面的端点。只有我的Spring应用程序才能访问它。

我想代理传递GET和POST请求

这是我的POST请求的示例:

<form action="/proxy/mail" method="post" encType="multipart/form-data">                 
   <input id="file" class="file" type="file" name="file" >
   <input type="text" name="firstname" value="test">
   <input type="submit" value="Submit">
</form>

@RequestMapping("/proxy/**")
@ResponseBody
public String mirrorRest(@RequestBody(required=false) String body, HttpMethod method, HttpServletRequest request, HttpServletResponse response){
    if(!user_is_allowed())){
        return "NO!!!!"
    }

    //TODO: proxy request to http://my-service-behide-firewall/mail
    return result
}

我尝试使用restTemplate.exchange但是遇到了multipart / form-data

的问题

有人知道如何管理此代理请求吗?

1 个答案:

答案 0 :(得分:0)

参考This Link

在本文中,我们将探讨单独部署的前端应用程序和REST API之间的通信。

目标是解决浏览器的CORS和同源策略限制,并允许UI调用API,即使它们不共享相同的源。

我们基本上会创建两个独立的应用程序 - 一个UI应用程序和一个简单的REST API,我们将在UI应用程序中使用Zuul代理来代理对REST API的调用。

Zuul是Netflix基于JVM的路由器和服务器端负载均衡器。 Spring Cloud与嵌入式Zuul代理有很好的集成 - 我们将在这里使用它。