Суть в том, что когда грузим контент с указанного URI, а там (внезапно) редирект (HTTP Code 301) на другой URI, то в итоге в переменную $http_response_header попадают заголовки как оригинального запроса, так и того, куда нас редиректнуло.
При этом в httpClient не срабатывает автоопределение типа контента, т.к. для анализа берется первый заголовок Content-Type (который выдавался при редиректе, а он может отличаться)
Код для понимания сути:
Код: Выделить всё
$responseContent = file_get_contents('https://esi.tech.ccp.is/latest/universe/regions');
$responseHeaders = $http_response_header;
var_dump($responseHeaders);
Код: Выделить всё
array(27) {
[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"
}
А во втором (когда уже пошли реальные данные) - Content-Type: application/json
Если этот URI запросить через httpClient, то функция getData() возвратит исключение "Unable to detect format for content parsing", т.к. для анализа берет первый заголовок.