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?