Include "Zotero/[version]" in file sync requests
To avoid blocking by some institutional firewalls https://forums.zotero.org/discussion/93510/general-sync-error
This commit is contained in:
parent
3dab64ddbb
commit
819dc7f6f4
2 changed files with 17 additions and 10 deletions
|
@ -1937,7 +1937,7 @@ Zotero.Keys = new function() {
|
|||
|
||||
|
||||
/**
|
||||
* Add X-Zotero-Version header to HTTP requests to zotero.org
|
||||
* Identify client when connecting to first-party domains
|
||||
*
|
||||
* @namespace
|
||||
*/
|
||||
|
@ -1955,13 +1955,21 @@ Zotero.VersionHeader = {
|
|||
try {
|
||||
let channel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
|
||||
let domain = channel.URI.host;
|
||||
if (domain.endsWith(ZOTERO_CONFIG.DOMAIN_NAME)) {
|
||||
// Add X-Zotero-Version header to HTTP requests to zotero.org
|
||||
let isPrimaryDomain = domain == ZOTERO_CONFIG.DOMAIN_NAME
|
||||
|| domain.endsWith('.' + ZOTERO_CONFIG.DOMAIN_NAME);
|
||||
if (isPrimaryDomain) {
|
||||
channel.setRequestHeader("X-Zotero-Version", Zotero.version, false);
|
||||
}
|
||||
else {
|
||||
let ua = channel.getRequestHeader('User-Agent');
|
||||
ua = this.update(domain, ua);
|
||||
channel.setRequestHeader('User-Agent', ua, false);
|
||||
// Use "Firefox/[version]" in user agent if not a file sync request
|
||||
let s3DomainRE = /zoterofilestorage(test)?\.s3\.(us-east-1\.)?amazonaws\.com/;
|
||||
let isAppNameDomain = s3DomainRE.test(domain);
|
||||
if (!isAppNameDomain) {
|
||||
let ua = channel.getRequestHeader('User-Agent');
|
||||
ua = this.update(ua);
|
||||
channel.setRequestHeader('User-Agent', ua, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
|
@ -1972,12 +1980,11 @@ Zotero.VersionHeader = {
|
|||
/**
|
||||
* Replace Zotero/[version] with Firefox/[version] in the default user agent
|
||||
*
|
||||
* @param {String} domain
|
||||
* @param {String} ua - User Agent
|
||||
* @param {String} [testAppName] - App name to look for (necessary in tests, which are
|
||||
* currently run in Firefox)
|
||||
*/
|
||||
update: function (domain, ua, testAppName) {
|
||||
update: function (ua, testAppName) {
|
||||
var info = Services.appinfo;
|
||||
var appName = testAppName || info.name;
|
||||
|
||||
|
|
|
@ -13,17 +13,17 @@ describe("Zotero", function() {
|
|||
var platformVersion = Services.appinfo.platformVersion.match(/^\d+/)[0] + '.0';
|
||||
var ua1 = `Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 ${Zotero.clientName}/${Zotero.version}`;
|
||||
var ua2 = `Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/${platformVersion}`;
|
||||
assert.equal(Zotero.VersionHeader.update('example.com', ua1, ZOTERO_CONFIG.CLIENT_NAME), ua2);
|
||||
assert.equal(Zotero.VersionHeader.update(ua1, ZOTERO_CONFIG.CLIENT_NAME), ua2);
|
||||
});
|
||||
|
||||
it("should show Chrome user agent unchanged", function () {
|
||||
var ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
|
||||
assert.equal(Zotero.VersionHeader.update('example.com', ua, ZOTERO_CONFIG.CLIENT_NAME), ua);
|
||||
assert.equal(Zotero.VersionHeader.update(ua, ZOTERO_CONFIG.CLIENT_NAME), ua);
|
||||
});
|
||||
|
||||
it("should show Firefox user agent unchanged", function () {
|
||||
var ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/60.0';
|
||||
assert.equal(Zotero.VersionHeader.update('example.com', ua, ZOTERO_CONFIG.CLIENT_NAME), ua);
|
||||
assert.equal(Zotero.VersionHeader.update(ua, ZOTERO_CONFIG.CLIENT_NAME), ua);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue