问题标签 [content-disposition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
360 浏览

popup - 仅当用户保存下载的文件时才关闭弹出式浏览器窗口

我们有一个弹出窗口,用户在其中进行一些选择并单击按钮以生成 pdf 文件。我们显示进度显示(动画 gif),然后最终使用 content-disposition: inline 将 pdf 内容发送给用户。然后,用户通常会打印 pdf 文件。

对于某些用户,没有用于 pdf 文件的内嵌浏览器查看器,并提示用户保存 pdf 文件。在这些情况下,进度显示保持打开状态,即使文件已交付。检测用户选择保存文件而不是内联显示的好方法是什么?

到目前为止,我提出的一个想法是在弹出窗口中设置一个计时器,以在其内容仍然存在时关闭窗口。理论上,如果窗口的内容被pdf查看器替换,计时器将被清除。还有其他选择吗?如果 pdf 生成可能需要很长时间,我怎么知道将计时器设置为多长时间?我可以先发送 http 标头,然后再发送 pdf 内容以快速触发 pdf 查看器吗?

0 投票
3 回答
3564 浏览

php - PHP 中设置的 Content Dispostion 标头不适用于 Firefox

我有一个表单按钮,可以将数据提交到通用脚本(加载表单的同一页面,index.php),如果将正确的 POST 变量提交给该脚本,它会返回一个 PDF 供用户打印(使用加载的相关表单信息,以及其他数据库信息等)。

问题是,无论我在标题中将 content-type 和 content-disposition 设置为什么,Firefox 都会提示用户保存或打开文档。

如果 Firefox 提供它自己的 Adob​​e Reader 插件作为“打开方式”选项,这不会那么糟糕,但它只提供实际的 Adob​​e Reader 应用程序(由于身份验证和默认浏览器设置超出我的控制等而导致问题) )。

那么服务器端是否需要更改(在 .htaccess 文件或实际标头中)以让 Firefox 收到消息,即响应既是具有 application/pdf MIME 类型的 PDF,因此应该将文件视为它是 PDF 的硬链接,而不是服务器生成的流?

最后一件事...

如果我将 Content-Disposition 设置为“inline”,Firefox 会在 Firefox 中打开文件,但仅在首先将页面加载为“index.php”之前。一旦用户访问 PDF,如果他们尝试单击后退按钮,他们会点击加载 PDF 的 index.php,而不是他们提交数据的那个。在 Mac 方面,Firefox 不会加载 PDF,而是提示用户保存或打开“index.php”,就好像它是一个附件一样。

谢谢!


目前我尝试过的代码(按此顺序):

此文件被视为文件附件,因此文件扩展名规则将忽略 Firefox 的 Mime-Type 规则:

这个工作但index.php首先加载然后加载文件,这没有吸引力,令人困惑,并且在pdf和原始页面之间放置了一个额外的请求(因此是一个额外的页面):

这个被视为与attachment(在 Firefox 中)相同,因此仅提示在 Adob​​e Reader 中保存或打开,而不是默认为 Adob​​e Reader 插件:

另请注意,在最后一个示例中,我尝试了pdfapplication\pdf作为内容配置。没有不同。

我唯一没有尝试过的是将类型设置为八进制/流。我会交叉手指,但不会屏住呼吸。

0 投票
4 回答
2672 浏览

c# - 内容处置问题

我有一个存储媒体文件(.avi fe)的 sql 数据库。我将 aspx 页面 (VIDEOPAGE) 中的视频提取为字节数组,并将其发送到另一个调用此页面的网页(必须是这种方式),并使用呈现 Windows 媒体播放器控件的 html 对象标记显示视频。

我使用的语法是:

这适用于所有 mpeg 和 wmv 文件,但在 avi 上失败!contentType 变量包含正确的内容类型(我知道这是因为以下原因:

当我不使用对象标签而只是使用数据库中的 avi 文件和上述语法加载 VIDEOPAGE 页面时,它会显示一个“你要打开..”对话框,我单击确定,并且视频 DOES在 WMP 中显示。

我试图改变Content-Dispositiontohidden和 also inline。没有什么..

有任何想法吗?

0 投票
1 回答
1686 浏览

javascript - 使用 Content-Disposition:attachment 在浏览器中重置等待光标

以下代码运行良好:

但是,当响应返回附件时(例如,来自 ReportViewer 控件的 PDF):

EndRequest() 永远不会触发,并且“进度”光标不会重置。Javascript 调用,例如

会做的伎俩,但由于内容处置是不可能的。您能想出一种正确的方法吗 - 在呈现 PDF 时显示等待光标,并在显示 PDF 时返回正常光标?我在这里假设 C# 上下文,但问题不是特定于语言或平台的。

0 投票
2 回答
1398 浏览

php - 使用 Content-disposition 查看文件的内容:使用套接字的附件

我想解析动态 .csv 文件的内容。但是,此代码(显然带有 duff 文件名等):

...只需下载文件。

在命令行中使用 openssl 我可以输入完全相同的请求并返回以下响应标头:

为了避免自动下载文件,我尝试使用 截断第一个字符substr,希望浏览器可能会将响应输出fgets视为当前文档的一组标题。那没有用。追求同样的想法,我还尝试在打开套接字之前插入一堆换行符,但这也不起作用。

我的两个问题是:

  1. 为什么浏览器认为它应该下载文件?
  2. 我怎样才能阻止它?

我应该提一下,到目前为止我只使用过 Chrome,但我不明白它为什么会有所作为。

非常感谢,安德烈亚斯

0 投票
3 回答
2816 浏览

internet-explorer - IE 和 Content-disposition 内联与扩展令牌

前言

所以 IE 会做Mime-Type sniffing。那部分是旧消息。

关于如何对抗它的建议往往是“提供内容类型的 IE 信任”(即任何不是文本/纯文本或应用程序/八位字节流的内容)或“在文件开头添加无关数据”这绝对是你所服务的类型'。

现在,我正在开发一个应用程序,它必须允许消息附件(如在电子邮件中),偶尔内联显示(再次如在电子邮件中),并且我们想要关闭 XSS 向量。IE 的 mime 嗅探(在未修补的 IE6 中,我必须支持,例如 IE6/Win2000)是这些向量之一 -text/plain具有 html 内容的文件将作为 html 触发。在这一点上,重新编码不是一个选项,更改用户提供的附件只有在绝对不怀疑文件的恶意性时才会发生 - 并且有人可能希望将 HTML 作为文本发送。

现在,微软的 MSDN 文章暗示这种情况可能比宣传的更容易解决:

如果 Internet Explorer 知道指定的 Content-Type并且没有 Content-Disposition数据,Internet Explorer 将执行“MIME 嗅探”, [...]

伟大的!

除了我没有 IE 也没有当前的方法来可靠地安装它(我意识到这对于 web 开发人员来说是一个相当可悲的状态,我希望尽快解决这个问题)而且这是我似乎不太明白的灰色理论以一种或另一种方式得到确认。当地消息人士称,这行是胡说八道——IE 会模仿Content-Disposition: inline / 的任何内容,并且对于<default>-Type的口味不够具体。

但是 x-* (RFC 中的 'extension-token')呢?

尝试用谷歌搜索浏览器如何处理Content-Disposition:<extension-token>并没有产生任何结果(尽管我可能只是做错了,但我最近对谷歌的理解严重下滑)。我发现了一个看起来很有希望的问题,但结果证明是线程作者一方的误解,这意味着思路实际上从未在那里得到解决。

问题)

如果您明确传递Content-Disposition: inline,IE 真的会嗅探吗?

如果是这样:这里有人知道浏览器如何处理Content-Disposition:<extension-token>吗?

如果他们以对我的目的有益的方式这样做,假设它与默认值同义(实际上是“内联”,尽管我听说它没有在任何地方定义?),它是否足够具体到 IE不去Mime 嗅探?或者我真的是在考虑追求这条道路而自取其辱?

0 投票
3 回答
4777 浏览

php - 如何在 Apache 中同时重写和设置标头

我有一个图像目录,可以直接在浏览器中查看,其他时候下载。

所以,假设我有一个文件 /gallery/gal_4254.jpg。

我想让 /download/gal_4254.jpg 触发图像的下载而不是查看它。/download 是空的,所有图像都在 /gallery 中。

我可以成功地将下载目录的请求映射到其他文件

我已经可以通过设置强制下载画廊目录

所以设置标题是没有问题的。我实际上并不希望 /gallery 有标题,只是通过 /download/ 请求 /gallery/* 被重写。

但是,我需要将两者结合起来,所以请求被映射到另一个目录中的文件,并且文件被赋予了附件头。

我尝试更改重写和标题部分的顺序无济于事。我认为当请求被重写到另一个目录时它会丢失标题。

关于如何在 Apache 中执行此操作的任何建议?

我意识到这也可以用 PHP 来完成,这就是为什么我在这里发布它与服务器故障。也欢迎使用 PHP 的解决方案。

0 投票
4 回答
20316 浏览

java - Java webapp:添加内容处置标头以强制浏览器“另存为”行为

即使它不是 HTTP 1.1/RFC2616 webapps 的一部分,希望在浏览器中强制下载(而不是显示)资源也可以使用如下Content-Disposition标头:

即使很难,它只在 RFC2183 中定义,而不是HTTP 1.1 的一部分,它可以在大多数 Web 浏览器中按需运行。

所以从客户端来看,一切都足够好。

但是在服务器端,就我而言,我有一个 Java webapp,但我不知道应该如何设置该标头,尤其是在以下情况下...

我将在 Amazon S3 实例上托管一个文件(比如称为“ bigfile ”)(我的 S3 存储桶应可以使用部分地址访问,例如:files.mycompany.com/),因此用户将能够在 files 访问此文件.mycompany.com/bigfile

现在有没有办法制作一个servlet(或.jsp),以便Content-Disposition在用户想要下载该文件时始终添加标头?

代码会是什么样子?有什么问题(如果有的话)?

0 投票
7 回答
17776 浏览

c# - Content-Disposition 标头中的 Unicode

我正在使用在 HttpHandler child 中实现的 HttpContext 对象来下载文件,当我在文件名中有非 ascii 字符时,它在 IE 中看起来很奇怪,而在 Firefox 中看起来很好。

以下是代码:-

当我在文件名字段中提供 'ß' 'ä' 'ö' 'ü' 'ó' 'ß' 'ä' 'ö' 'ü' 'ó' 时,它看起来与我在文件中的不同命名它在 Firefox 中看起来不错。添加 EncodingType 和 charset 已经没有用了。

在即它是 'ß' 'ä' 'ö' 'ü' 'ó' 'ß' 'ä' 'ö' 'ü'_'ó' 在 Firefox 中它是 'ß' ' ä' 'ö' 'ü' 'ó' 'ß' 'ä' 'ö' 'ü' 'ó'。

任何想法如何解决这个问题?

0 投票
1 回答
19882 浏览

php - 内容处置:内联标题不会内联显示图像?

我正在尝试在页面上显示内联图像。它由一个 codeigniter 控制器提供服务。

当我在 FF 的 Chrome 中加载图像时,它会弹出下载窗口。我知道当浏览器无法内联显示内容时,无论如何它都会强制下载,但这些是 PNG 和 GIF 图像,否则它们可以在浏览器中正常显示。在 IE 中,它不会强制下载,但会以 ASCII 格式显示图像。

如果我注释掉整个图像情况,FF 和 Chrome 都显示 ASCII 但不显示图像。

我认为设置内容类型将允许 FF 和 Chrome 显示实际图像,并且还允许将位置用作 src。

javascript和css当然很好。

有人知道如何使图像正确显示吗?