From c7c37590f9df8e0072b3e2dd005b06e94df5e67f Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Thu, 6 Apr 2017 17:32:17 +0000 Subject: [PATCH] Customize: Fix HTTPS navigation of site in preview on IE11. Accounts for HTTPS links (port 443) where [40318] only accounted for HTTP links (port 80). Addresses issue in IE11 where the default port number is unexpectedly included on `link.host` for links dynamically created by scripts. Props mattwiebe. Amends [40318], [38890]. See #38409. Fixes #40198. Merges [40381] to the 4.7 branch. git-svn-id: https://develop.svn.wordpress.org/branches/4.7@40386 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/js/customize-base.js | 2 +- src/wp-includes/js/customize-preview.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wp-includes/js/customize-base.js b/src/wp-includes/js/customize-base.js index a1528de4ff..3fdb92423f 100644 --- a/src/wp-includes/js/customize-base.js +++ b/src/wp-includes/js/customize-base.js @@ -655,7 +655,7 @@ window.wp = window.wp || {}; var urlParser = document.createElement( 'a' ); urlParser.href = to; // Port stripping needed by IE since it adds to host but not to event.origin. - return urlParser.protocol + '//' + urlParser.host.replace( /:80$/, '' ); + return urlParser.protocol + '//' + urlParser.host.replace( /:(80|443)$/, '' ); }); // first add with no value diff --git a/src/wp-includes/js/customize-preview.js b/src/wp-includes/js/customize-preview.js index 7b8804d3ed..adb9f03847 100644 --- a/src/wp-includes/js/customize-preview.js +++ b/src/wp-includes/js/customize-preview.js @@ -286,11 +286,11 @@ return false; } - elementHost = element.host.replace( /:80$/, '' ); + elementHost = element.host.replace( /:(80|443)$/, '' ); parsedAllowedUrl = document.createElement( 'a' ); matchesAllowedUrl = ! _.isUndefined( _.find( api.settings.url.allowed, function( allowedUrl ) { parsedAllowedUrl.href = allowedUrl; - return parsedAllowedUrl.protocol === element.protocol && parsedAllowedUrl.host.replace( /:80$/, '' ) === elementHost && 0 === element.pathname.indexOf( parsedAllowedUrl.pathname.replace( /\/$/, '' ) ); + return parsedAllowedUrl.protocol === element.protocol && parsedAllowedUrl.host.replace( /:(80|443)$/, '' ) === elementHost && 0 === element.pathname.indexOf( parsedAllowedUrl.pathname.replace( /\/$/, '' ) ); } ) ); if ( ! matchesAllowedUrl ) { return false;