示例#1
0
 protected function prepareRequestUri()
 {
     $requestUri = '';
     if ($this->headers->has('X_REWRITE_URL')) {
         // check this first so IIS will catch
         $requestUri = $this->headers->get('X_REWRITE_URL');
     } elseif ($this->server->get('IIS_WasUrlRewritten') == '1' && $this->server->get('UNENCODED_URL') != '') {
         // IIS7 with URL Rewrite: make sure we get the unencoded url (double slash problem)
         $requestUri = $this->server->get('UNENCODED_URL');
     } elseif ($this->server->has('REQUEST_URI')) {
         $requestUri = $this->server->get('REQUEST_URI');
         // HTTP proxy reqs setup request uri with scheme and host [and port] + the url path, only use url path
         $schemeAndHttpHost = $this->getScheme() . '://' . $this->getHttpHost();
         if (strpos($requestUri, $schemeAndHttpHost) === 0) {
             $requestUri = substr($requestUri, strlen($schemeAndHttpHost));
         }
     } elseif ($this->server->has('ORIG_PATH_INFO')) {
         // IIS 5.0, PHP as CGI
         $requestUri = $this->server->get('ORIG_PATH_INFO');
         if ($this->server->get('QUERY_STRING')) {
             $requestUri .= '?' . $this->server->get('QUERY_STRING');
         }
     }
     return $requestUri;
 }
示例#2
0
 /**
  * Determines whether two Request HTTP header sets are non-varying based on
  * the vary response header value provided.
  *
  * @param string $vary A Response vary header
  * @param array  $env1 A Request HTTP header array
  * @param array  $env2 A Request HTTP header array
  *
  * @return Boolean true if the the two environments match, false otherwise
  */
 public function requestsMatch($vary, $env1, $env2)
 {
     if (empty($vary)) {
         return true;
     }
     foreach (preg_split('/[\\s,]+/', $vary) as $header) {
         $key = HeaderBag::normalizeHeaderName($header);
         $v1 = isset($env1[$key]) ? $env1[$key] : null;
         $v2 = isset($env2[$key]) ? $env2[$key] : null;
         if ($v1 !== $v2) {
             return false;
         }
     }
     return true;
 }
示例#3
0
 public function isRedirected($location)
 {
     return $this->isRedirect() && $location == $this->headers->get('Location');
 }