mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-11 20:30:23 +00:00
HTTP API: Normalize cookies before passing them to Requests.
Requests has its own cookie object in form of `Requests_Cookie`. Therefore we have to convert `WP_Http_Cookie` objects to `Requests_Cookie`. This introduces `WP_Http_Cookie::get_attributes()` to retrieve cookie attributes of a `WP_Http_Cookie` object and `WP_Http::normalize_cookies()` to convert the cookie objects. Fixes #37437. git-svn-id: https://develop.svn.wordpress.org/trunk@38164 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -325,9 +325,9 @@ class WP_Http {
|
||||
$options['max_bytes'] = $r['limit_response_size'];
|
||||
}
|
||||
|
||||
// If we've got cookies, use them
|
||||
// If we've got cookies, use and convert them to Requests_Cookie.
|
||||
if ( ! empty( $r['cookies'] ) ) {
|
||||
$options['cookies'] = $r['cookies'];
|
||||
$options['cookies'] = WP_Http::normalize_cookies( $r['cookies'] );
|
||||
}
|
||||
|
||||
// SSL certificate handling
|
||||
@@ -413,6 +413,30 @@ class WP_Http {
|
||||
return apply_filters( 'http_response', $response, $r, $url );
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalizes cookies for using in Requests.
|
||||
*
|
||||
* @since 4.6.0
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @param array $cookies List of cookies to send with the request.
|
||||
* @return Requests_Cookie_Jar Cookie holder object.
|
||||
*/
|
||||
public static function normalize_cookies( $cookies ) {
|
||||
$cookie_jar = new Requests_Cookie_Jar();
|
||||
|
||||
foreach ( $cookies as $name => $value ) {
|
||||
if ( $value instanceof WP_Http_Cookie ) {
|
||||
$cookie_jar[ $value->name ] = new Requests_Cookie( $value->name, $value->value, $value->get_attributes() );
|
||||
} elseif ( is_string( $value ) ) {
|
||||
$cookie_jar[ $name ] = new Requests_Cookie( $name, $value );
|
||||
}
|
||||
}
|
||||
|
||||
return $cookie_jar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Match redirect behaviour to browser handling.
|
||||
*
|
||||
@@ -420,9 +444,13 @@ class WP_Http {
|
||||
* RFC 7231, user agents can deviate from the strict reading of the
|
||||
* specification for compatibility purposes.
|
||||
*
|
||||
* @param string $location URL to redirect to.
|
||||
* @param array $headers Headers for the redirect.
|
||||
* @param array $options Redirect request options.
|
||||
* @since 4.6.0
|
||||
* @access public
|
||||
* @static
|
||||
*
|
||||
* @param string $location URL to redirect to.
|
||||
* @param array $headers Headers for the redirect.
|
||||
* @param array $options Redirect request options.
|
||||
* @param Requests_Response $original Response object.
|
||||
*/
|
||||
public static function browser_redirect_compatibility( $location, $headers, $data, &$options, $original ) {
|
||||
|
||||
Reference in New Issue
Block a user