diff --git src/wp-admin/js/customize-controls.js src/wp-admin/js/customize-controls.js
index 1a088ca..ecc1167 100644
--- src/wp-admin/js/customize-controls.js
+++ src/wp-admin/js/customize-controls.js
@@ -3219,6 +3219,29 @@
 			topFocus.focus();
 		}, 200);
 
+		// Change the preview URL for static pages
+		$.each( [ 'page_on_front', 'page_for_posts' ], function ( i, controlId ) {
+			api( controlId, function( control ) {
+				control.bind( function( to ) {
+					if ( isNaN( to ) ) {
+						return false;
+					}
+					var x = parseFloat( to );
+					if ( (x | 0) === x && 0 < to ) {
+						var request = wp.ajax.post( 'customize_' + controlId, {
+							nonce: window._wpCustomizeControls.getPreviewUrlNonce,
+							wp_customize: 'on',
+							url: api.previewer.previewUrl(),
+							id: to
+						} );
+						request.done( function( data ) {
+							api.previewer.previewUrl( data.url );
+						});
+					}
+				});
+			});
+		});
+
 	});
 
 })( wp, jQuery );
diff --git src/wp-includes/class-wp-customize-manager.php src/wp-includes/class-wp-customize-manager.php
index 7f778eb..8e118cb 100644
--- src/wp-includes/class-wp-customize-manager.php
+++ src/wp-includes/class-wp-customize-manager.php
@@ -134,6 +134,8 @@ final class WP_Customize_Manager {
 
 		add_action( 'wp_ajax_customize_save',           array( $this, 'save' ) );
 		add_action( 'wp_ajax_customize_refresh_nonces', array( $this, 'refresh_nonces' ) );
+		add_action( 'wp_ajax_customize_page_on_front',  array( $this, 'page_on_front' ) );
+		add_action( 'wp_ajax_customize_page_for_posts', array( $this, 'page_for_posts' ) );
 
 		add_action( 'customize_register',                 array( $this, 'register_controls' ) );
 		add_action( 'customize_register',                 array( $this, 'register_dynamic_settings' ), 11 ); // allow code to create settings first
@@ -852,6 +854,55 @@ final class WP_Customize_Manager {
 	}
 
 	/**
+	 * Get the page_on_front preview URL.
+	 *
+	 * @since 4.3.0
+	 */
+	public function page_on_front() {
+		$this->preview_url( true );
+	}
+
+	/**
+	 * Get the page_for_posts preview URL.
+	 *
+	 * @since 4.3.0
+	 */
+	public function page_for_posts() {
+		$this->preview_url( false );
+	}
+	
+	/**
+	 * AJAX helper to get the preview URL.
+	 *
+	 * @since 4.3.0
+	 *
+	 * @param bool $front True for the front page, false otherwise.
+	 */
+	public function preview_url( $front = true ) {
+		if ( ! $this->is_preview() ) {
+			wp_send_json_error( 'not_preview' );
+		}
+
+		if ( ! check_ajax_referer( 'get-preview-url', 'nonce', false ) ) {
+			wp_send_json_error( 'invalid_nonce' );
+		}
+
+		$id = absint( $_POST['id'] );
+		if ( 1 > $id ) {
+			wp_send_json_error( 'invalid_id' );
+		}
+
+		$current_url = esc_url( $_POST[ 'url' ] );
+		$preview_url = esc_url( true === $front ? home_url( '/' ) : get_permalink( $id ) );
+
+		if ( $current_url === $preview_url ) {
+			wp_send_json_error( 'same_url' );
+		}
+
+		wp_send_json_success( array( 'url' => $preview_url ) );
+	}
+
+	/**
 	 * Add a customize setting.
 	 *
 	 * @since 3.4.0
diff --git src/wp-includes/script-loader.php src/wp-includes/script-loader.php
index 71e07f5..27d4816 100644
--- src/wp-includes/script-loader.php
+++ src/wp-includes/script-loader.php
@@ -402,6 +402,9 @@ function wp_default_scripts( &$scripts ) {
 		// Used for overriding the file types allowed in plupload.
 		'allowedFiles' => __( 'Allowed Files' ),
 	) );
+	did_action( 'init' ) && $scripts->localize( 'customize-controls', '_wpCustomizeControls', array(
+		'getPreviewUrlNonce' => wp_create_nonce( 'get-preview-url' ),
+	) );
 
 	$scripts->add( 'customize-widgets', "/wp-admin/js/customize-widgets$suffix.js", array( 'jquery', 'jquery-ui-sortable', 'jquery-ui-droppable', 'wp-backbone', 'customize-controls' ), false, 1 );
 	$scripts->add( 'customize-preview-widgets', "/wp-includes/js/customize-preview-widgets$suffix.js", array( 'jquery', 'wp-util', 'customize-preview' ), false, 1 );
