我知道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的相同字符串!!!
现在怎么办?
最合适的回答,由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