- Fix XMLHTTPRequest in Firefox 3.6
- Restore sending of cookies even if "Allow third-party cookies" is disabled (requires Firefox 3.6; not tested) - Added Zotero.isFx36 for 1.9.2
This commit is contained in:
parent
e15acb3e7e
commit
3959cf7fd0
|
@ -1012,16 +1012,9 @@ Zotero.Utilities.HTTP = new function() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
|
||||||
.createInstance();
|
|
||||||
// Prevent certificate/authentication dialogs from popping up
|
|
||||||
xmlhttp.mozBackgroundRequest = true;
|
|
||||||
xmlhttp.open('GET', url, true);
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Workaround for "Accept third-party cookies" being off in Firefox 3.0.1
|
// Workaround for "Accept third-party cookies" being off in Firefox 3.0.1
|
||||||
// https://www.zotero.org/trac/ticket/1070
|
// https://www.zotero.org/trac/ticket/1070
|
||||||
|
if (Zotero.isFx30) {
|
||||||
const Cc = Components.classes;
|
const Cc = Components.classes;
|
||||||
const Ci = Components.interfaces;
|
const Ci = Components.interfaces;
|
||||||
var ds = Cc["@mozilla.org/webshell;1"].
|
var ds = Cc["@mozilla.org/webshell;1"].
|
||||||
|
@ -1034,6 +1027,20 @@ Zotero.Utilities.HTTP = new function() {
|
||||||
xmlhttp.open("GET", url, true);
|
xmlhttp.open("GET", url, true);
|
||||||
xmlhttp.channel.loadGroup = ds.getInterface(Ci.nsILoadGroup);
|
xmlhttp.channel.loadGroup = ds.getInterface(Ci.nsILoadGroup);
|
||||||
xmlhttp.channel.loadFlags |= Ci.nsIChannel.LOAD_DOCUMENT_URI;
|
xmlhttp.channel.loadFlags |= Ci.nsIChannel.LOAD_DOCUMENT_URI;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
||||||
|
.createInstance();
|
||||||
|
// Prevent certificate/authentication dialogs from popping up
|
||||||
|
xmlhttp.mozBackgroundRequest = true;
|
||||||
|
xmlhttp.open('GET', url, true);
|
||||||
|
// Send cookie even if "Allow third-party cookies" is disabled (>=Fx3.6 only)
|
||||||
|
if (!Zotero.isFx35) {
|
||||||
|
var channel = xmlhttp.channel;
|
||||||
|
channel.QueryInterface(Components.interfaces.nsIHttpChannelInternal);
|
||||||
|
channel.forceAllowThirdPartyCookie = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** @ignore */
|
/** @ignore */
|
||||||
xmlhttp.onreadystatechange = function() {
|
xmlhttp.onreadystatechange = function() {
|
||||||
|
@ -1080,16 +1087,9 @@ Zotero.Utilities.HTTP = new function() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
|
||||||
.createInstance();
|
|
||||||
// Prevent certificate/authentication dialogs from popping up
|
|
||||||
xmlhttp.mozBackgroundRequest = true;
|
|
||||||
xmlhttp.open('POST', url, true);
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Workaround for "Accept third-party cookies" being off in Firefox 3.0.1
|
// Workaround for "Accept third-party cookies" being off in Firefox 3.0.1
|
||||||
// https://www.zotero.org/trac/ticket/1070
|
// https://www.zotero.org/trac/ticket/1070
|
||||||
|
if (Zotero.isFx30) {
|
||||||
const Cc = Components.classes;
|
const Cc = Components.classes;
|
||||||
const Ci = Components.interfaces;
|
const Ci = Components.interfaces;
|
||||||
var ds = Cc["@mozilla.org/webshell;1"].
|
var ds = Cc["@mozilla.org/webshell;1"].
|
||||||
|
@ -1102,6 +1102,20 @@ Zotero.Utilities.HTTP = new function() {
|
||||||
xmlhttp.open("POST", url, true);
|
xmlhttp.open("POST", url, true);
|
||||||
xmlhttp.channel.loadGroup = ds.getInterface(Ci.nsILoadGroup);
|
xmlhttp.channel.loadGroup = ds.getInterface(Ci.nsILoadGroup);
|
||||||
xmlhttp.channel.loadFlags |= Ci.nsIChannel.LOAD_DOCUMENT_URI;
|
xmlhttp.channel.loadFlags |= Ci.nsIChannel.LOAD_DOCUMENT_URI;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
||||||
|
.createInstance();
|
||||||
|
// Prevent certificate/authentication dialogs from popping up
|
||||||
|
xmlhttp.mozBackgroundRequest = true;
|
||||||
|
xmlhttp.open('POST', url, true);
|
||||||
|
// Send cookie even if "Allow third-party cookies" is disabled (>=Fx3.6 only)
|
||||||
|
if (!Zotero.isFx35) {
|
||||||
|
var channel = xmlhttp.channel;
|
||||||
|
channel.QueryInterface(Components.interfaces.nsIHttpChannelInternal);
|
||||||
|
channel.forceAllowThirdPartyCookie = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (headers) {
|
if (headers) {
|
||||||
if (typeof headers == 'string') {
|
if (typeof headers == 'string') {
|
||||||
|
@ -1162,16 +1176,9 @@ Zotero.Utilities.HTTP = new function() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
|
||||||
.createInstance();
|
|
||||||
// Prevent certificate/authentication dialogs from popping up
|
|
||||||
xmlhttp.mozBackgroundRequest = true;
|
|
||||||
xmlhttp.open('HEAD', url, true);
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Workaround for "Accept third-party cookies" being off in Firefox 3.0.1
|
// Workaround for "Accept third-party cookies" being off in Firefox 3.0.1
|
||||||
// https://www.zotero.org/trac/ticket/1070
|
// https://www.zotero.org/trac/ticket/1070
|
||||||
|
if (Zotero.isFx30) {
|
||||||
const Cc = Components.classes;
|
const Cc = Components.classes;
|
||||||
const Ci = Components.interfaces;
|
const Ci = Components.interfaces;
|
||||||
var ds = Cc["@mozilla.org/webshell;1"].
|
var ds = Cc["@mozilla.org/webshell;1"].
|
||||||
|
@ -1183,16 +1190,31 @@ Zotero.Utilities.HTTP = new function() {
|
||||||
// Prevent certificate/authentication dialogs from popping up
|
// Prevent certificate/authentication dialogs from popping up
|
||||||
xmlhttp.mozBackgroundRequest = true;
|
xmlhttp.mozBackgroundRequest = true;
|
||||||
xmlhttp.open("HEAD", url, true);
|
xmlhttp.open("HEAD", url, true);
|
||||||
|
xmlhttp.channel.loadGroup = ds.getInterface(Ci.nsILoadGroup);
|
||||||
|
xmlhttp.channel.loadFlags |= Ci.nsIChannel.LOAD_DOCUMENT_URI;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
||||||
|
.createInstance();
|
||||||
|
// Prevent certificate/authentication dialogs from popping up
|
||||||
|
xmlhttp.mozBackgroundRequest = true;
|
||||||
|
xmlhttp.open('HEAD', url, true);
|
||||||
|
// Send cookie even if "Allow third-party cookies" is disabled (>=Fx3.6 only)
|
||||||
|
if (!Zotero.isFx35) {
|
||||||
|
var channel = xmlhttp.channel;
|
||||||
|
channel.QueryInterface(Components.interfaces.nsIHttpChannelInternal);
|
||||||
|
channel.forceAllowThirdPartyCookie = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (requestHeaders) {
|
if (requestHeaders) {
|
||||||
for (var header in requestHeaders) {
|
for (var header in requestHeaders) {
|
||||||
xmlhttp.setRequestHeader(header, requestHeaders[header]);
|
xmlhttp.setRequestHeader(header, requestHeaders[header]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xmlhttp.channel.loadGroup = ds.getInterface(Ci.nsILoadGroup);
|
|
||||||
xmlhttp.channel.loadFlags |= Ci.nsIChannel.LOAD_DOCUMENT_URI;
|
|
||||||
|
|
||||||
// Don't cache HEAD requests
|
// Don't cache HEAD requests
|
||||||
xmlhttp.channel.loadFlags |= Ci.nsIRequest.LOAD_BYPASS_CACHE;
|
xmlhttp.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE;
|
||||||
|
|
||||||
/** @ignore */
|
/** @ignore */
|
||||||
xmlhttp.onreadystatechange = function(){
|
xmlhttp.onreadystatechange = function(){
|
||||||
|
|
|
@ -197,6 +197,7 @@ var Zotero = new function(){
|
||||||
|| appInfo.platformVersion.indexOf('1.9.0') === 0;
|
|| appInfo.platformVersion.indexOf('1.9.0') === 0;
|
||||||
this.isFx35 = appInfo.platformVersion.indexOf('1.9.1') === 0;
|
this.isFx35 = appInfo.platformVersion.indexOf('1.9.1') === 0;
|
||||||
this.isFx31 = this.isFx35;
|
this.isFx31 = this.isFx35;
|
||||||
|
this.isFx36 = appInfo.platformVersion.indexOf('1.9.2') === 0;
|
||||||
|
|
||||||
// OS platform
|
// OS platform
|
||||||
var win = Components.classes["@mozilla.org/appshell/appShellService;1"]
|
var win = Components.classes["@mozilla.org/appshell/appShellService;1"]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user