the error page to display // suggestion button for www const httpsOnlySuggestionPref = Services.prefs.getBoolPref( "dom.security.https_only_mode_error_page_user_suggestions" ); // only check if pref is true otherwise return if (!httpsOnlySuggestionPref) { return; } // get the host url without the path with www in front const wwwURL = "https://www." + this.contentWindow.location.host; fetch(wwwURL, { credentials: "omit", cache: "no-store", }) .then(data => { if (data.status === 200) { this.contentWindow.dispatchEvent( new this.contentWindow.CustomEvent("pingSecureWWWLinkSuccess") ); } }) .catch(() => { dump("No secure www suggestion possible for " + wwwURL); }); } RPMOpenSecureWWWLink() { // if user wants to visit suggested secure www page: visit page with www prefix and delete errorpage from history const context = this.manager.browsingContext; const docShell = context.docShell; const httpChannel = docShell.failedChannel.QueryInterface( Ci.nsIHttpChannel ); const webNav = docShell.QueryInterface(Ci.nsIWebNavigation); const triggeringPrincipal = docShell.failedChannel.loadInfo.triggeringPrincipal; const oldURI = httpChannel.URI; const newWWWURI = oldURI .mutate() .setHost("www." + oldURI.host) .finalize(); webNav.loadURI(newWWWURI, { triggeringPrincipal, loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY, }); } } PK