diff --git a/core/lib/Drupal/Core/Ajax/AjaxResponse.php b/core/lib/Drupal/Core/Ajax/AjaxResponse.php
index 2ae1853..ac8660a 100644
--- a/core/lib/Drupal/Core/Ajax/AjaxResponse.php
+++ b/core/lib/Drupal/Core/Ajax/AjaxResponse.php
@@ -78,6 +78,20 @@ public function prepareResponse(Request $request) {
     if ($this->data == '{}') {
       $this->setData($this->ajaxRender($request));
     }
+
+    // Add proper HTTP Header for IE.
+    $accept = $request->headers->get('accept');
+    if (strpos($accept, 'text/html') !== FALSE) {
+      $this->headers->set('Content-Type', 'text/html; charset=utf-8');
+
+      // Browser IFRAMEs expect HTML. Browser extensions, such as Linkification
+      // and Skype's Browser Highlighter, convert URLs, phone numbers, etc. into
+      // links. This corrupts the JSON response. Protect the integrity of the
+      // JSON data by making it the value of a textarea.
+      // @see http://malsup.com/jquery/form/#file-upload
+      // @see http://drupal.org/node/1009382
+      $this->setContent('<textarea>' . $this->data  . '</textarea>');
+    }
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Controller/AjaxController.php b/core/lib/Drupal/Core/Controller/AjaxController.php
index c63360c..02d34c6 100644
--- a/core/lib/Drupal/Core/Controller/AjaxController.php
+++ b/core/lib/Drupal/Core/Controller/AjaxController.php
@@ -11,6 +11,7 @@
 use Symfony\Component\DependencyInjection\ContainerAwareInterface;
 use Symfony\Component\DependencyInjection\ContainerAwareTrait;
 use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
 
 /**
  * Default controller for Ajax requests.
diff --git a/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php
index 377ae93..31422c1 100644
--- a/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php
@@ -44,6 +44,7 @@ public function __construct(ContentNegotiation $negotiation) {
     'drupal_modal' => 'controller.dialog:modal',
     'html' => 'controller.page:content',
     'drupal_ajax' => 'controller.ajax:content',
+    'iframeupload' => 'controller.ajax:content',
   );
 
   /**
diff --git a/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php
index 84b94c9..34c4380 100644
--- a/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php
@@ -129,20 +129,6 @@ public function onJson(GetResponseForControllerResultEvent $event) {
     return $response;
   }
 
-  public function onIframeUpload(GetResponseForControllerResultEvent $event) {
-    $response = $event->getResponse();
-
-    // Browser IFRAMEs expect HTML. Browser extensions, such as Linkification
-    // and Skype's Browser Highlighter, convert URLs, phone numbers, etc. into
-    // links. This corrupts the JSON response. Protect the integrity of the
-    // JSON data by making it the value of a textarea.
-    // @see http://malsup.com/jquery/form/#file-upload
-    // @see http://drupal.org/node/1009382
-    $html = '<textarea>' . $response->getContent() . '</textarea>';
-
-    return new Response($html);
-  }
-
   /**
    * Registers the methods in this class that should be listeners.
    *
