read obtener name http_request_headers headers capturar cabeceras all php curl http-headers get-headers

obtener - php get header by name



PHP-get_headers() devuelve resultados incorrectos cuando los símbolos que no son UTF están en URL (1)

El último término contiene datos UTF-8 que deben codificarse correctamente. Esto funciona:

var_dump(get_headers(''http://www.zakon.hr/z/199/'' . rawurlencode(''Zakon-o-elektroničkoj-trgovini'') ));

Produce este resultado:

array(11) { [0] => string(15) "HTTP/1.1 200 OK" [1] => string(73) "Set-Cookie: JSESSIONID=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA; Path=/; HttpOnly" [2] => string(100) "Set-Cookie: AAAA=AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA; Expires=Wed, 09-Apr-2025 14:57:24 GMT; Path=/" [3] => string(37) "Content-Type: text/html;charset=utf-8" [4] => string(23) "Content-Language: en-US" [5] => string(21) "Content-Length: 74205" [6] => string(21) "Vary: Accept-Encoding" [7] => string(35) "Date: Mon, 01 Jun 2015 14:57:24 GMT" [8] => string(17) "Connection: close" [9] => string(22) "Server: lighttpd/2.0.0" [10] => string(43) "Set-Cookie: LBSERVERID=srv2-zakonhr; path=/" }

Me encontré con el resultado incorrecto del método get_headers() .

URL para la prueba: http://www.zakon.hr/z/199/Zakon-o-elektroni%C4%8Dkoj-trgovini

Aquí hay una solicitud de curl simple a esa URL:

Como puede ver en la captura de pantalla, hay una respuesta exitosa con el código 200 OK.

Pero si uso get_headers() para la misma URL obtengo otro resultado:

var_dump(get_headers(''http://www.zakon.hr/z/199/Zakon-o-elektroničkoj-trgovini'')); array(4) { [0]=> string(24) "HTTP/1.0 400 Bad request" [1]=> string(23) "Cache-Control: no-cache" [2]=> string(17) "Connection: close" [3]=> string(23) "Content-Type: text/html" }

¿Porqué es eso?