Intereting Posts
Использование nonce в пользовательской форме входа в систему Как удалить выпадающий список из wp_nav_menu Зарегистрируйте скрипт в одном плагине и запишите его в другой Загрузка / развертывание установки нескольких сайтов Чистый пользовательский URL для Serach + Таможенная таксономия WP_Query Meta_key – это текстовое значение и нужно сортировать как числовое значение, не работающее столбцы базы данных: post_title vs post_name Форматы отображения / запроса tiny_mce_before_init: 'exact' => true не влияет Несколько авторов с разными «авторскими ролями» Запросить сообщения или получить сообщения по настраиваемым полям, возможно? Включить связанные сообщения на странице Как отображать сообщения текущего пользователя / автора в шаблоне пользовательской страницы? Категория с типом pagination post type 404 Изменение загруженного изображения с помощью 'wp_get_image_editor' и 'wp_handle_upload_prefilter'

Обтекание add_query_arg с esc_url не работает

Я знаю о проблеме XSS, связанной с add_query_arg() . Вот почему я обертываю его esc_url() .

Проблема в том, что это не работает с wp_remote_get() .

Если я пойду:

 $url = add_query_arg( array( 'email' => 'myadress@mail.com', 'token' => '899A762614F6C49809A374FB955EC8C15'), 'https://example.com/v3/transactions/notifications/3FF732-68B436B43622-3664083FB82B-CFB043' ); $response = wp_remote_get( $url ); 

Я получаю действительный ответ тела.

Но если я использую esc_url для $url :

 $url = esc_url(add_query_arg( array( 'email' => 'myadress@mail.com', 'token' => '899A762614F6C49809A374FB955EC8C15'), 'https://example.com/v3/transactions/notifications/3FF732-68B436B43622-3664083FB82B-CFB043' )); $response = wp_remote_get( $url ); 

Ответ тела – «Несанкционированный».

И странная часть: оба кода повторяют одну и ту же строку для $ url !!!

Что теперь?

Solutions Collecting From Web of "Обтекание add_query_arg с esc_url не работает"

И странная часть: оба кода повторяют одну и ту же строку для $ url !!!

Нет, они этого не делают. Посмотрите на источник страницы. esc_url() кодирует символ & control. Вы не можете этого сделать и ожидаете, что HTTP-запрос будет работать правильно.

esc_url_raw() этого используйте esc_url_raw() . Обратите внимание на описание в Codex относительно этой функции:

Функция esc_url_raw () похожа на esc_url () (и фактически использует ее), но в отличие от esc_url () она не заменяет объекты для отображения. Полученный URL-адрес безопасен для использования в запросах базы данных, перенаправлениях и HTTP-запросах .
https://codex.wordpress.org/Function_Reference/esc_url_raw