Вот такой незамысловатый код:
Проблема в том, что указанный URL вызывает редирект на https://esi[dot]tech[dot]ccp[dot]is/latest/universe/regions/ (со слешем в конце)
А в $responseHeaders получаем объединение заголовков двух ответов:
PHP:
скопировать код в буфер обмена
[0]=> string(30) "HTTP/1.0 301 Moved Permanently" [1]=> string(35) "Location: /latest/universe/regions/" [2]=> string(35) "Date: Sun, 29 Oct 2017 19:11:32 GMT" [3]=> string(18) "Content-Length: 60" [4]=> string(38) "Content-Type: text/html; charset=utf-8" [5]=> string(15) "Via: 1.1 google" [6]=> string(14) "Alt-Svc: clear" [7]=> string(15) "HTTP/1.0 200 OK" [8]=> string(38) "Access-Control-Allow-Credentials: true" [9]=> string(69) "Access-Control-Allow-Headers: Content-Type,Authorization,X-User-Agent" [10]=> string(41) "Access-Control-Allow-Methods: GET,OPTIONS" [11]=> string(30) "Access-Control-Allow-Origin: *" [12]=> string(51) "Access-Control-Expose-Headers: Content-Type,Warning" [13]=> string(27) "Access-Control-Max-Age: 600" [14]=> string(19) "Content-Length: 901" [15]=> string(30) "Content-Type: application/json" [16]=> string(35) "Date: Sun, 29 Oct 2017 12:20:10 GMT" [17]=> string(42) "ETag: W/"8c76d9724a0581bb6c256c807fd0649f"" [18]=> string(38) "Expires: Mon, 30 Oct 2017 11:05:00 GMT" [19]=> string(44) "Last-Modified: Sun, 29 Oct 2017 11:14:24 GMT" [20]=> string(43) "Strict-Transport-Security: max-age=31536000" [21]=> string(29) "X-Esi-Error-Limit-Remain: 100" [22]=> string(27) "X-Esi-Error-Limit-Reset: 50" [23]=> string(15) "Via: 1.1 google" [24]=> string(21) "Cache-Control: public" [25]=> string(10) "Age: 24682" [26]=> string(14) "Alt-Svc: clear" }
Видно, что первые 7 элементов - заголовок первого ответа, дальше элементы - заголовок второго ответа.
Тестил на 5.6.31 и PHP 7.0.23
Главный вопрос - это фича или баг? Если фича - то как разделять заголовки (какой заголовок к какому запросу относится, а если редиректов 5 будет?)
В документации на эту тему ничего не нашел, гугл тоже молчит (или я не умею спрашивать)
P.S. я конечно URL вызова поправил, но в Yii2 httpClient при определении типа контента берет первый заголовок "Content-Type" и в данном случае ничего не работает :)
|