web/lib/Zend/Amf/Response/Http.php
changeset 807 877f952ae2bd
parent 207 621fa6caec0c
child 1230 68c69c656a2c
--- a/web/lib/Zend/Amf/Response/Http.php	Thu Mar 21 17:31:31 2013 +0100
+++ b/web/lib/Zend/Amf/Response/Http.php	Thu Mar 21 19:50:53 2013 +0100
@@ -15,9 +15,9 @@
  * @category   Zend
  * @package    Zend_Amf
  * @subpackage Response
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
- * @version    $Id: Http.php 22096 2010-05-04 15:37:23Z wadearnold $
+ * @version    $Id: Http.php 24593 2012-01-05 20:35:02Z matthew $
  */
 
 /** Zend_Amf_Response */
@@ -28,7 +28,7 @@
  *
  * @package    Zend_Amf
  * @subpackage Response
- * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
  * @license    http://framework.zend.com/license/new-bsd     New BSD License
  */
 class Zend_Amf_Response_Http extends Zend_Amf_Response
@@ -41,11 +41,33 @@
     public function getResponse()
     {
         if (!headers_sent()) {
-            header('Cache-Control: no-cache, must-revalidate');
+            if ($this->isIeOverSsl()) {
+                header('Cache-Control: cache, must-revalidate');
+                header('Pragma: public');
+            } else {
+                header('Cache-Control: no-cache, must-revalidate');
+                header('Pragma: no-cache');
+            }
             header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
-            header('Pragma: no-cache');
             header('Content-Type: application/x-amf');
         }
         return parent::getResponse();
     }
+
+    protected function isIeOverSsl()
+    {
+        $ssl = isset($_SERVER['HTTPS']) ? $_SERVER['HTTPS'] : false;
+        if (!$ssl || ($ssl == 'off')) {
+            // IIS reports "off", whereas other browsers simply don't populate
+            return false;
+        }
+
+        $ua  = $_SERVER['HTTP_USER_AGENT'];
+        if (!preg_match('/; MSIE \d+\.\d+;/', $ua)) {
+            // Not MicroSoft Internet Explorer
+            return false;
+        }
+
+        return true;
+    }
 }