如何忽略Firefox中的“Content-Disposition:attachment”

时间:2010-07-15 00:19:02

标签: http firefox browser download

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

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

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

Firefox 3.6.6 Windows XP SP3

7 个答案:

答案 0 :(得分:11)

This 是您正在寻找解决此问题的Firefox插件。

答案 1 :(得分:7)

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我今晚也found this完全阻止Firefox通过下载乱丢你的桌面。它实际上是对MAC中hidden / private / temp文件夹的重定向修复。天才。

  

只需更改[Firefox]即可模仿Windows行为   将目录下载到/tmp

     

要执行此操作,请打开Firefox's General preferences窗格,在Save Downloaded Files To下选择[选择] ....在出现的对话框中,   点击Shift-Command-G以显示Go to Folder对话框。

     

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

答案 6 :(得分:0)

由于我一直在寻找解决方案,并且没有可用的附加组件实际上与我的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中安装附加组件。如果你想禁用" Content-Disposition"改变只是停用附加组件;-)。

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