瀏覽代碼

ZF-11060
Zend_Uri
Zend_Uri_Http disallows pipe character (|) in URIs


git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@23942 44c647ce-9c0f-0410-b52a-842ac1e357ba

adamlundrigan 14 年之前
父節點
當前提交
01af53d003
共有 2 個文件被更改,包括 12 次插入4 次删除
  1. 2 2
      library/Zend/Uri/Http.php
  2. 10 2
      tests/Zend/Uri/HttpTest.php

+ 2 - 2
library/Zend/Uri/Http.php

@@ -44,10 +44,10 @@ class Zend_Uri_Http extends Zend_Uri
      * Character classes for validation regular expressions
      */
     const CHAR_ALNUM    = 'A-Za-z0-9';
-    const CHAR_MARK     = '-_.!~*\'()\[\]';
+    const CHAR_MARK     = '-_.!~*\'()\[\]|';
     const CHAR_RESERVED = ';\/?:@&=+$,';
     const CHAR_SEGMENT  = ':@&=+$,;';
-    const CHAR_UNWISE   = '{}|\\\\^`';
+    const CHAR_UNWISE   = '{}\\\\^`';
 
     /**
      * HTTP username

+ 10 - 2
tests/Zend/Uri/HttpTest.php

@@ -227,7 +227,6 @@ class Zend_Uri_HttpTest extends PHPUnit_Framework_TestCase
         $unwise = array(
             'http://example.com/?q={',
             'http://example.com/?q=}',
-            'http://example.com/?q=|',
             'http://example.com/?q=\\',
             'http://example.com/?q=^',
             'http://example.com/?q=`',
@@ -248,7 +247,6 @@ class Zend_Uri_HttpTest extends PHPUnit_Framework_TestCase
         $unwise = array(
             'http://example.com/?q={',
             'http://example.com/?q=}',
-            'http://example.com/?q=|',
             'http://example.com/?q=\\',
             'http://example.com/?q=^',
             'http://example.com/?q=`',
@@ -432,6 +430,16 @@ class Zend_Uri_HttpTest extends PHPUnit_Framework_TestCase
     }
     
     /**
+     * @group ZF-11060
+     */
+    public function testAcceptsPipeCharacterAsPartOfUri()
+    {
+        $uri = Zend_Uri_Http::fromString('http://www.example.com/map?apistyle=a|b|c');
+        $this->assertType('Zend_Uri_Http', $uri);
+        $this->assertEquals('apistyle=a|b|c', $uri->getQuery());
+    }
+    
+    /**
      * @group ZF-11188
      * @see http://www.ietf.org/rfc/rfc2732.txt
      */