I found that my rssget script is not working in Firefox 3 beta for some of the link. After some investigation, the cause seems to be the difference in redirection handling. In Firefox 2, when GM_xmlhttpRequest()
is fired, it would follow status like 302 to do the redirection to return the correct page response to the onload
function. However, in Firefox 3, the onload
would receive a status like 302 and thus the script would fail.
I don’t know whether it is the responsibility for the browser or the script to handle redirection like this. I have changed the script itself to follow the redirection. The code is like:
GM_xmlhttprequest({
method:"GET",
url: url,
onload: function(response){
if(response.status 301 || response.status 302 || response.status == 303){
var loc = /Location: ([^n]*)n/.exec(response.responseHeaders)[1];
GM_xmlhttprequest({
method:"GET",
url:loc,
onload:arguments.callee
});
return;
}
//go on with normal parsing...
}
})
I’ve only included status 301 to 303 for the time being. Then it will try to get the ‘Location’ from its header and finally invoke another GM_xmlhttpRequest()
. A little trick here is to use arguments.callee
to recur itself.
The updated script is tagged as 1.5 in the code site . You will only need it if your script fail in Firefox 3.