对cookie值进行编码的AFAIK URL仍然是一种事实上的标准,它是基于旧的、丑陋的Netscape cookie specs, 这基本上是说分号、逗号和空格是不允许的,应该进行编码,例如使用URL编码。它既不需要enocding,也不强制使用或URL编码,但这就是它的实现方式。
因此,当将字符串传递给构造函数时,WP_Http_Cookie
假设数据来自cookie,因此cookie值已编码并需要解码。我个人认为它不应该这样做,而是让开发人员根据需要处理值,如中所述Ticket 19922.
但是,在调度请求时,WP_Http_Cookie::getHeaderValue
调用,这是a filter is available, wp_http_cookie_value
. 假设您接收的cookie值是URL编码的,您可以使用此筛选器对其重新编码。
function wp_http_cookie_value_filter($value, $name)
{
return urlencode($value);
}
add_filter(\'wp_http_cookie_value\', \'wp_http_cookie_value_filter\', 10, 2);
然而,这当然适用于所有请求,所以只要您不能确定您是唯一使用此过滤器和/或发出包含cookie的请求的人,这可能是一个非常糟糕的主意。
如果您的cookie有一个非常独特的名称,您可以使用该名称仅过滤特定的cookie值:
function wp_http_cookie_value_filter($value, $name)
{
if($name === \'my_very_special_cookie\')
{
return urlencode($value);
}
return $value;
}
add_filter(\'wp_http_cookie_value\', \'wp_http_cookie_value_filter\', 10, 2);
除此之外,您最好使用变通方法,即仅为您的特定请求操纵cookie值。