Получить конечный пункт назначения после перенаправления WP_Http (WordPress) - PullRequest
1 голос
/ 21 апреля 2011

Я делаю некоторые запросы к API через WordPress, и API использует соединения SSL, если они включены в настройках API. Я хотел бы определить, включен ли SSL или нет, не спрашивая пользователя, включен ли SSL для его учетной записи, и API хорошо справляется с перенаправлением, что означает

Теперь я хотел бы посмотреть, произошло ли перенаправление или нет, и записать это в мои параметры, чтобы другие запросы выполнялись по правильному URL-адресу без каких-либо перенаправлений.

Итак, мой вопрос: есть ли способ определить конечный пункт назначения после стрельбы WP_Http->request(), когда запрос перенаправляется?

Я не вижу никакой информации об этом в массивах ответов, я только вижу окончательный ответ, но я не знаю, с какого URL он пришел. Что я могу сделать, так это установить для параметра redirection значение 0 и перехватить максимально допустимую ошибку перенаправления, но это не является пуленепробиваемым, поскольку я до сих пор не знаю, произошло ли перенаправление с http на https или просто на другую страницу под http.

Надеюсь, все это имеет смысл, дайте мне знать, если у вас есть идеи.

Спасибо!

~ K

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

check $ response ['headers'] - они могут содержать ключ 'location'.

Все зависит от используемой вами библиотеки HTTP.См. Файл class-http.php (wp 3.0.1): строка 1393, действие http_api_curl - дескриптор curl, доступный напрямую для захвата чего-либо.

fopen: проверка строк 887-888 и переменная $ http_response_header.

также попробуйте переопределить функцию processHeaders, поскольку она имеет доступ к необработанным заголовкам http.

0 голосов
/ 21 апреля 2011

Класс WP_Http обрабатывает заголовки и удаляет все, кроме последнего.Таким образом, вы можете сделать то, что Jetdog, описанный выше.Проверьте исходный URL и сравните его с возвращенным $ response ['headers'] ['location'].Если он отличается, вы знаете, что он перенаправлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...