Java : Unable to change 'Content-Disposition' attribute in the Header for a response

标签 java http-headers

下面是代码:

Resource resource = getResource(request, requestUrl, userInfo, objectIdParam,
        rootFolderId, pathInfo, overrideCharset, isThumbnailResource);

// New line added to change Content-Disposition
response.setHeader( "Content-Disposition", "attachment;filename=" + pathInfo );

if (resource != null && resource.isServable()) {
    resource.serve(request, response);
}

如您所见,我已明确尝试将 header 中的“Content-Disposition”更改为“attachment”。但是,当我打开 MS Office 文档时,HTTP header 数据将其显示为“内联”: 内容配置:内联; filename="New%20Microsoft%20Office%20Word%20Document.docx"

你认为我应该做些什么来纠正这个问题吗?

最佳答案

我怀疑 resource.serve 方法调用在内部用它自己的值覆盖 header 。

The javadoc说:

If the header had already been set, the new value overwrites the previous one. The containsHeader method can be used to test for the presence of a header before setting its value.

关于Java : Unable to change 'Content-Disposition' attribute in the Header for a response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6926577/

相关文章:

rest - "no data provided"json PUT 请求中出现错误

ajax - 如果 REST API 方法失败,我应该返回 200、400 还是 500 HTTP 状态消息?

jquery - 仅当有 header 时,CORS 请求才会在 Chrome 中失败

api - 处理禁止的 REST 请求 403 与 404

java - 使用多少内核的决定权是否掌握在 JVM 手中?

java - 如何杀死或停止java applet中的其他线程

java - 是否可以在 Eclipse 中指定 F3 进行搜索?

apache - 您可以编写301重定向到 anchor 吗?

java - 使用 JFileChooser 设置值 JTextField

java如何解码收到的url参数抛出BeanParam