【问题标题】:How to ignore "Content-Disposition: attachment" in Firefox如何在 Firefox 中忽略“内容处置:附件”
【发布时间】:2011-03-16 03:50:40
【问题描述】:

如何让 Firefox 忽略 Content-Disposition: attachment 标头? 我发现无法在浏览器中查看图像非常烦人,因为它要求我下载它。

我不想下载文件,我只想在浏览器中查看它。如果浏览器没有插件来处理它,那么它应该要求下载。

例如我安装了 Adob​​e Acrobat Reader 作为 Firefox 的插件。我单击 PDF 的链接,当它应该使用插件在浏览器中打开时,它会要求我保存它。如果服务器未在响应中发送 Content-Disposition: attachment 标头,则会出现这种情况。

火狐 3.6.6 Windows XP SP3

【问题讨论】:

  • 选择“打开方式:Acrobat Reader”并获得 Acrobat Reader 窗口有什么问题?这只会将文件保存到您的临时目录,就像您在浏览器中打开它一样。
  • 很简单,它只是使用了太多的窗口。见下文。
  • @Borealid 我记得 pdfplugin 用于在获取文件时显示文件(无需全部获取/先下载然后再显示)。

标签: http firefox browser download


【解决方案1】:

嗯,这就是处置类型“附件”的目的。

默认行为(当标题不存在时)应该是内联显示。

您的浏览器或阅读器插件可能存在配置问题?

【讨论】:

  • 不,图片由 Firefox 直接处理;没有插件。我的意思是我不想下载它,我只是想看看它。这样做的最大原因是为了防止打开过多的窗户。通常,我单击一个链接,查看该文件。但在某些情况下(比如下载这张图片)打开一个新窗口“您的下载将很快开始”,这会打开一个 Firefox 对话框(是的,我知道我可以跳过这个)所以我选择“打开方式”,文件下载,然后程序打开。数一数这些。这是 5 个窗口,在所有其他情况下是 1 个。
  • 再次:检查您的阅读器插件是否配置正确(尝试另一台机器?)。检查 HTTP 跟踪(标头是否真的存在)。最好提供一个演示问题的测试用例。
  • site 正在添加标题以表示 it 想要您下载它。希望浏览器让您覆盖它是完全合理的(就像它对数千个其他操作所做的那样:在新选项卡中打开、阻止 javascript 等)。
【解决方案2】:

您可以编写一个 Firefox 扩展程序来删除 PDF 文件的处置标题。这将是一个相当简单的扩展。

【讨论】:

    【解决方案3】:

    对于 PDF,有一个名为 PDF-Download 的插件,它会覆盖任何下载 PDF 的尝试,并让用户决定他们希望如何下载它(内联、保存、外部等)。您也可以修改它以适用于其他文件类型。

    【讨论】:

      【解决方案4】:

      "Open in browser" extension 对于浏览器本机支持的格式很有用,对于 PDF 不确定。

      旧版 1.18(适用于 Waterfox Classic 等浏览器的用户)位于 Classic Add-ons Archive 中:

      • caa:插件/在浏览器中打开

      【讨论】:

      • 在你回答之前我已经找到了这个扩展,但我终于做到了。
      • 刚刚尝试安装扩展程序,它要求获得访问浏览历史记录和其他不需要的权限。那可能是作者的粗心大意,或者试图从用户的私人数据中赚钱。在后一种情况下,我们需要一个替代方案......
      • 您可以查看source code 以了解为什么需要某些权限——快速搜索表明它仅将其用于remove 来自history 的自己的条目。虽然我没有彻底审查它,但我觉得你的担忧是没有根据的 - 这看起来像是扩展系统的问题,而不是特定的扩展。
      【解决方案5】:

      刘凯的旧版InlineDisposition 1.0.2.4 可以解决这个问题。

      Classic Add-ons Archive处:

      • caa:插件/内联配置

      【讨论】:

      • 这是避免那些弹出窗口要求您保存或打开文件的解决方案,并勾选“不要问这个问题”框(即使它会问你它声称不会的问题'不要问。)它通过更改 Content-Disposition 标头来工作,以便您从浏览器中获得所需的行为,即尊重您的选择,即您始终希望在不被询问的情况下执行特定操作。
      • 这是一个更干净的解决方案,可以避免弹出窗口。这是与 Firefox Quantum 兼容的更新版本:addons.mozilla.org/en-US/firefox/addon/…
      【解决方案6】:

      我今晚也found this,这完全可以防止 Firefox 在您的桌面上乱扔下载。它实际上是对 MAC 中隐藏的 /private/temp 文件夹的重定向修复。天才。

      您可以简单地通过更改 [Firefox's] 来模仿 Windows 的行为 下载目录到/tmp

      为此,打开Firefox's General preferences 窗格,在Save Downloaded Files To 下选择[选择]...。在出现的对话框中, 点击Shift-Command-G 调出Go to Folder 对话框。

      在此对话框中,只需输入/tmp,点击OK,然后点击Select 主窗口。

      【讨论】:

        【解决方案7】:

        由于我一直在寻找解决方案,但实际上没有可用的插件与我的 Firefox 31.0 (Ubuntu) 配合使用,我决定尝试创建自己的插件。

        如果您想存档类似的目标或只是想知道它是如何工作的代码。

        console.log("starting addon to disable content-disposition...");
        
        //getting necessary objects
        var {Cc, Ci} = require("chrome");
        
        //creating the observer object which alters the Content-Disposition header to inline
        var httpResponseObserver = {
            //gets fired whenever a response is getting processed
            observe: function(subject, topic, data) {
                if (topic == "http-on-examine-response") {
                    var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
                    httpChannel.setResponseHeader("Content-Disposition", "inline", false);
                }
            }, 
            //needed for this.observerServer.addObserver --> without addObserver will fail
            get observerService() {
                return Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
            },
            //used to register with an observer
            register: function() {
                console.log("register with an observer to get response-events");
                this.observerService.addObserver(this, "http-on-examine-response", false);
            },
            //used to unregister from the observer
            unregister: function() {
                console.log("unregister from observer");
                this.observerService.removeObserver(this, "http-on-examine-response");
            }
        };
        
        //gets called at enable or install of the add-on
        exports.main = function(options, callbacks) {
            console.log("content-dispostion main method got invoked");
            //call register to make httpResponseObserver.observe get fired whenever a response gets processed
            httpResponseObserver.register();
        };
        
        //gets called on disable or uninstall
        exports.onUnload = function(reason) {
            console.log("content-dispostion unloaded");
            //unregister from observer
            httpResponseObserver.unregister();
        };
        
        /*
        
        //not needed!!! just test code for altering http-request header
        
        var httpRequestObserver =
        {
          observe: function(subject, topic, data)
          {
            console.log("in observe...");
            console.log("topic is: " + topic);
            if (topic == "http-on-modify-request") {
              var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
              httpChannel.setRequestHeader("X-Hello", "World", false);
            }
          },
        
          get observerService() {
            return Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
          },
        
          register: function()
          {
            this.observerService.addObserver(this, "http-on-modify-request", false);
          },
        
          unregister: function()
          {
            this.observerService.removeObserver(this, "http-on-modify-request");
          }
        };
        httpRequestObserver.register();
        */
        

        作为替代方案,您可以让我的 xpi-File 直接在 Firefox 中安装插件。如果您想禁用“内容处置”更改,只需停用附加组件;-)。

        http://www.file-upload.net/download-9374691/content-disposition_remover.xpi.html

        【讨论】:

          猜你喜欢
          • 2021-06-12
          • 1970-01-01
          • 1970-01-01
          • 2014-08-15
          • 1970-01-01
          • 1970-01-01
          • 2012-02-04
          • 2022-11-03
          • 2020-12-30
          相关资源
          最近更新 更多