我使用Spring Boot来实现REST应用程序。我有一个这样映射的资源
@RequestMapping(value = "/{fromLat}/{fromLon}/{toLat}/{toLon:.+}", method = {RequestMethod.GET}, produces = {"application/json"})
因此,路径包含坐标,并且请求如下所示
$ curl -I -X GET http://localhost:8085/foobar/53.481297/9.900539/53.491691/9.946046
不幸的是,最后一端被解释为文件扩展名,该文件扩展名导致响应头提供文件下载,而不仅仅是原始数据。
Content-Disposition: attachment;filename=f.txt
我以为我可以处理这种情况与自定义WebMvcConfigurerAdapter豆(且不@EnableWebMvc)注释解释一样在这里。
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter { @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { configurer.favorPathExtension(false); } }
但这并不能解决问题。不幸的是,检测到的文件扩展名未修复-因此,我无法对扩展名使用规则。
如何配置系统以仅响应内容而不响应Content-Disposition标头(导致下载f.txt)?我不想在末尾使用斜杠(“ /”)。
我已经看过以下资源
在Spring Framework 4.1.9和4.2.3中,Content- Disposition标头已固定为使用“内联”类型,该类型仅建议文件下载名称,以防最终下载内容。它将不再强制“另存为”对话框。
还请注意,首先使用Content- Disposition标头的原因是为了保护应用程序免受RFD攻击。这是一个非常复杂的问题,但是您可以在CVE-2015-5211报告中看到摘要。