Gareth Hunt 

Firefox Addons, Mobile Web and living in the USA
« Announcing: XHTML Mobile Profile v0.5.2 for Firefox 
Announcing Mailfrom v0.1: compose mailto links in webmail  »

Released: Modify Headers 0.6.3

Happy New Year to you all.

Before Christmas I released version 0.6.3 of Modify Headers . This version adds support for the Firefox 3 beta 2 . For current users this will automatically update, otherwise, please download from Mozilla Addons. 

Update: XHTML Mobile Profile 0.5.2 has been updated to support Firefox 3 beta 2 .

This entry was posted on Sunday, January 6th, 2008 at 11:34 am and is filed under Firefox . You can follow any responses to this entry through the RSS 2.0  feed. You can leave a response , or trackback  from your own site.

8 Responses to “Released: Modify Headers 0.6.3”

  1. NettiCatsays:
    January 8, 2008 at 7:59 am 

    First reading about the “Modify Headers” extension I thought: That’s what I ‘m looking for.

    But after installing the extension, it revealed to modify outging (request-) headers only. No possibility to modify or remove server-sided response headers. Yes, I should have read your extension-description more carefully, you mentioned it.

    Ok, you may ask, why should I want to filter response headers? Answer: There are several reasons why you may want to filter server headers. One of them is to force caching in firefox.

    Many servers send anti-cache headers, preventing firefox to cache documents and/or pictures, so there will always be a (full) reload when pushing the back button. That’s really annoying. Anti-cache headers may be AGE, CACHE-CONTROL, EXPIRES, ETAG, PRAGMA, VARY and even more headers.

    I really would appreciate adding that feature.

  2. gareth says:
    January 8, 2008 at 9:43 am 

    Hi NettiCat. I had always thought that response headers are immutable, but I had a look at the documentation and it looks possible. I’ve added an enhancement request here: https://www.mozdev.org/bugs/show_bug.cgi?id=18455 

    Feel free to add yourself as a CC on this.

    I have a lot of other features to add first, but I’ll add this to the roadmap for version 0.8 or 0.9.

  3. NettiCatsays:
    January 18, 2008 at 9:47 am 

    Thank you! (for adding my request to the road map)

  4. NettiCatsays:
    January 18, 2008 at 10:14 am 

    P.S.

    ACString getResponseHeader(in ACString header);

    void setResponseHeader(in ACString header, in ACString value, in boolean merge);

    http://developer.mozilla.org/en/docs/nsIHttpChannel 

  5. NettiCatsays:
    January 19, 2008 at 3:30 pm 

    This may not be of interest for bloggers, but as all postings will be reviewed I’ll post it anyway

    I made a small extension (BetterCache). It is a working demo concerning modification of response headers. You may use it in your own project:

    function RespHeaderObserver()

    {

    this.register();

    }

    RespHeaderObserver.prototype = {

    observe: function(subject, topic, data) {

    if (topic == “http-on-examine-response”) {

    var headers = new Array();

    headers[0] = “Age”;

    headers[1] = “Cache-Control”;

    headers[2] = “Date”;

    headers[3] = “ETag”;

    headers[4] = “Expires”;

    headers[5] = “Last-Modified”;

    headers[6] = “Pragma”;

    headers[7] = “Vary”;

    //headers[8] = “Set-Cookie”; //not anti-cache, but a better testpattern

    var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);

    //need to test every (above defined) header for existance. If not existant, getResponseHeader will throw an exception.

    for(i = 0; i < headers.length; i++){

    var headerval = “”;

    var replacement = “”;

    try{

    headerval = httpChannel.getResponseHeader (headers[i]);

    if(i == 6)//special case Pragma

    replacement = headerval.replace(/no\-cache/g, “”);

    httpChannel.setResponseHeader(headers[i], replacement, false);

    //alert(headers[i]+’='+headerval);

    }catch(e){}//NS_ERROR_(header_)NOT_AVAILABLE

    }

    headers = null;

    return;

    }

    },

    register: function() {

    var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);

    observerService.addObserver(this, “http-on-examine-response”, false);

    },

    unregister: function() {

    var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);

    try{

    observerService.removeObserver(this, “http-on-examine-response”);

    }catch(e){}

    }

    }

    //observer needs to be registered only once, so better use a XPT file

    window.addEventListener(”load”, function(evnt) { observer = new RespHeaderObserver(); }, true);

    window.addEventListener(”unload”, function(evnt) { observer.unregister(); }, true);

  6. cronosays:
    January 21, 2008 at 12:39 pm 

    Hi,

    I found your extension today and think it’s really great. It would be perfect for me when I could specify which headers are sent to which url (with regex).

    Example:

next
Page 1 of 2