diff --git a/src/Lunr/Corona/Request.php b/src/Lunr/Corona/Request.php
index e1db32fa5281d906ce6d0b3979333e06d7e8b647..d888e3310279683be64016ee93e5a91d92ea4c81 100644
--- a/src/Lunr/Corona/Request.php
+++ b/src/Lunr/Corona/Request.php
@@ -41,6 +41,12 @@ class Request
     protected $cookie;
 
     /**
+     * Stored $_SERVER values
+     * @var array
+     */
+    protected $server;
+
+    /**
      * Request parameters:
      *  'protocol'   The protocol used for the request
      *  'domain'     The domain used for the request
@@ -94,6 +100,7 @@ class Request
         $this->parser = $parser;
 
         $this->request  = $parser->parse_request();
+        $this->server   = $parser->parse_server();
         $this->post     = $parser->parse_post();
         $this->get      = $parser->parse_get();
         $this->cookie   = $parser->parse_cookie();
@@ -110,6 +117,7 @@ class Request
     {
         unset($this->post);
         unset($this->get);
+        unset($this->server);
         unset($this->cookie);
         unset($this->request);
         unset($this->files);
@@ -267,6 +275,18 @@ class Request
     }
 
     /**
+     * Retrieve a stored SERVER value.
+     *
+     * @param mixed $key Key for the value to retrieve
+     *
+     * @return mixed $return The value of the key or NULL if not found
+     */
+    public function get_server_data($key)
+    {
+        return isset($this->server[$key]) ? $this->server[$key] : NULL;
+    }
+
+    /**
      * Retrieve a stored COOKIE value.
      *
      * @param mixed $key Key for the value to retrieve
diff --git a/src/Lunr/Corona/RequestInterface.php b/src/Lunr/Corona/RequestInterface.php
index 37f12d29663a78aa5975258c79600a42e51f1139..80aab0da11b80a0c504d6fc5704103dfb93e09e5 100644
--- a/src/Lunr/Corona/RequestInterface.php
+++ b/src/Lunr/Corona/RequestInterface.php
@@ -79,6 +79,15 @@ interface RequestInterface
     public function get_cookie_data($key);
 
     /**
+     * Retrieve a stored SERVER value.
+     *
+     * @param mixed $key Key for the value to retrieve
+     *
+     * @return mixed $return The value of the key or NULL if not found
+     */
+    public function get_server_data($key);
+
+    /**
      * Negotiate & retrieve the client's prefered content type.
      *
      * @param Array $supported Array containing the supported content types
diff --git a/src/Lunr/Corona/RequestParser.php b/src/Lunr/Corona/RequestParser.php
index 397b80109c2d9937e4c15bd3143b1de28886a809..43d8dd38c978ec88c2adfb7107f0ca8abfc407cc 100644
--- a/src/Lunr/Corona/RequestParser.php
+++ b/src/Lunr/Corona/RequestParser.php
@@ -86,6 +86,16 @@ class RequestParser implements RequestParserInterface
     }
 
     /**
+     * Store request related information and remove it from super globals where necessary.
+     *
+     * @return Array Parsed HTTP header values
+     */
+    public function parse_server()
+    {
+        return [];
+    }
+
+    /**
      * Parse $_POST values into local variable and reset it globally.
      *
      * @return Array Parsed POST values
diff --git a/src/Lunr/Corona/RequestParserInterface.php b/src/Lunr/Corona/RequestParserInterface.php
index 33b7656665a4971383a4b9d837e4091bbc9bf928..2f6dfbe11fbc21742abe8dd66c1d91b0b509a795 100644
--- a/src/Lunr/Corona/RequestParserInterface.php
+++ b/src/Lunr/Corona/RequestParserInterface.php
@@ -28,6 +28,13 @@ interface RequestParserInterface
     public function parse_request();
 
     /**
+     * Store $_SERVER header values into local variables and reset it globally.
+     *
+     * @return mixed
+     */
+    public function parse_server();
+
+    /**
      * Parse $_POST values into local variable and reset it globally.
      *
      * @return Array Parsed POST values
diff --git a/src/Lunr/Corona/WebRequestParser.php b/src/Lunr/Corona/WebRequestParser.php
index 4c66c0b7ddb26d0a24718e3b74c79417c662b3c7..9a793cdb6795f888a2df778d3558a17776f904e4 100644
--- a/src/Lunr/Corona/WebRequestParser.php
+++ b/src/Lunr/Corona/WebRequestParser.php
@@ -179,16 +179,20 @@ class WebRequestParser implements RequestParserInterface
     /**
      * Parse super global variables.
      *
-     * @param Array $_VAR Reference to a super global variable
+     * @param Array   $_VAR  Reference to a super global variable
+     * @param Boolean $reset Whether to reset the super global variable
      *
      * @return Array $var Parsed variable
      */
-    protected function parse_super_global(&$_VAR)
+    protected function parse_super_global(&$_VAR, $reset = TRUE)
     {
         if (!is_array($_VAR) || empty($_VAR))
         {
             //reset super global
-            $_VAR = [];
+            if($reset)
+            {
+                $_VAR = [];
+            }
 
             return $_VAR;
         }
@@ -201,12 +205,25 @@ class WebRequestParser implements RequestParserInterface
         }
 
         //reset super global
-        $_VAR = [];
+        if($reset)
+        {
+            $_VAR = [];
+        }
 
         return $var;
     }
 
     /**
+     * Store request related information and remove it from super globals where necessary.
+     *
+     * @return Array Parsed HTTP header values
+     */
+    public function parse_server()
+    {
+        return $this->parse_super_global($_SERVER, FALSE);
+    }
+
+    /**
      * Parse $_POST values into local variable and reset it globally.
      *
      * @return Array Parsed POST values
