[wp-trac] [WordPress Trac] #36253: Host header should not include port in WP_Http_Streams

WordPress Trac noreply at wordpress.org
Tue Mar 15 21:03:25 UTC 2016


#36253: Host header should not include port in WP_Http_Streams
--------------------------+-----------------------------
 Reporter:  bangelov      |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  General       |    Version:  trunk
 Severity:  normal        |   Keywords:
  Focuses:                |
--------------------------+-----------------------------
 If you set '''Host''' header that includes port in wp_remote_* methods and
 you are using '''WP_Http_Streams''', port will be doubly added into the
 '''Host''' header which brakes the HTTP request

 Example request:

 {{{#!php
 <?php
 wp_remote_post( 'http://example.org', array( 'headers' => array( 'Host' =>
 'localhost:8080' ) );
 }}}

 will become localhost:8080:8080 because the following code doesn't strip
 the port from the Host header

 {{{#!php
 <?php
 if ( isset( $r['headers']['Host'] ) || isset( $r['headers']['host'] ) ) {
         if ( isset( $r['headers']['Host'] ) )
                 $arrURL['host'] = $r['headers']['Host'];
         else
                 $arrURL['host'] = $r['headers']['host'];
         unset( $r['headers']['Host'], $r['headers']['host'] );
 }
 }}}

 Solution:

 {{{#!php
 <?php
 if ( isset( $r['headers']['Host'] ) || isset( $r['headers']['host'] ) ) {
         if ( isset( $r['headers']['Host'] ) )
                 $arrURL['host'] = array_shift( explode( ':',
 $r['headers']['Host'] ) );
         else
                 $arrURL['host'] = array_shift( explode( ':',
 $r['headers']['host'] ) );
                 unset( $r['headers']['Host'], $r['headers']['host'] );
         }
 }}}

--
Ticket URL: <https://core.trac.wordpress.org/ticket/36253>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list