包装添加查询参数时esc_url不起作用

时间:2015-05-04 作者:Luis Rock

我知道XSS问题与add_query_arg()作用这就是为什么我要用esc_url().

问题是。。。这不适用于wp_remote_get().

如果我去:

$url = add_query_arg( array( \'email\' => \'[email protected]\', 
\'token\' => \'899A762614F6C49809A374FB955EC8C15\'),
\'https://example.com/v3/transactions/notifications/3FF732-68B436B43622-3664083FB82B-CFB043\' );
$response = wp_remote_get( $url );
我得到了有效的身体反应。

但是如果我在$url:

$url = esc_url(add_query_arg( array( \'email\' => \'[email protected]\', 
\'token\' => \'899A762614F6C49809A374FB955EC8C15\'),
\'https://example.com/v3/transactions/notifications/3FF732-68B436B43622-3664083FB82B-CFB043\' ));
$response = wp_remote_get( $url );
车身响应为“未经授权”。

奇怪的是:这两个代码都回显了$url的相同字符串!!!

现在怎么办?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

奇怪的是:这两个代码都回显了$url的相同字符串!!!

不,他们没有。看看页面来源。esc_url() 正在编码& 控制字符。您不能这样做,而期望HTTP请求正常工作。

使用esc_url_raw() 相反请注意法典中关于该功能的描述:

esc\\u url\\u raw()函数类似于esc\\u url()(并实际使用它),但与esc\\u url()不同,它不替换要显示的实体。The resulting URL is safe to use in 数据库查询、重定向和HTTP requests.
https://codex.wordpress.org/Function_Reference/esc_url_raw

结束

相关推荐

Theme URLs problem

我编写了一篇主题文章(编辑:可能是single.php 模板)使用该函数get_userdata( $_GET[\'p\'] ). 但主管理员将URL重新格式化为:~/author/gamelaster (默认值为?author=1) 现在,这是不正确的工作。如何获取此URL格式的作者id?或如何从数据库中获取用户slug+get id?但是,我不能使用标准的author函数/post函数(get\\u ID等)。