the - ¿Cuál es la longitud máxima de la url de Apache?
longitud maxima de una url (6)
Aquí hay un script bash para verificar el límite máximo de un servidor remoto (utiliza curl y perl).
Solo necesita algún tipo de url que se pueda extender con ''x'' y siempre devuelva 200 (o adaptarlo a sus necesidades). En algún momento se romperá y el script mostrará la longitud máxima.
Aquí está el código:
url=''http://someurl/someendpoint?var1=blah&token=''
ok=0
times=1
while :; do
length=$((times+${#url}))
echo trying with $length
token=$(perl -le ''print "x"x''$times)
result=$(curl -sLw ''%{http_code}'' -o /dev/null "${url}${token}")
if [[ $result == 200 ]]; then
if [[ $ok == $times ]]; then
echo "max length is $length"
break
fi
ok=$times
times=$((times+1024))
else
times=$(((times+ok)/2))
fi
done
¿Cuál es la longitud máxima de una URL en apache? ¿Dónde está documentado, y es configurable?
Estoy implementando un proveedor de identidad openid, y me gustaría saber las limitaciones que me enfrenta. Sé sobre el límite de ruta de 2048 bytes en Internet Explorer. Eso se puede manejar especialmente utilizando la detección de agente de usuario. Otros navegadores tienen límites de URL mucho más altos.
Entonces, lo que me interesa son los límites del servidor apache al codificar una aplicación.
El límite predeterminado para la longitud de la línea de solicitud es 8192 bytes = 8 * 1024. Si desea cambiar el límite, debe agregar o actualizar en su servidor de tomcat.xml el attribut maxHttpHeaderSize.
como:
<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />
En este ejemplo, establezco el límite en 65536 bytes = 64 * 1024.
Espero que esto ayude
El tamaño predeterminado permitido de URI es de 8177 caracteres en la solicitud GET. Código simple en Python para tales pruebas.
#!/usr/bin/env python2
import sys
import socket
if __name__ == "__main__":
string = sys.argv[1]
buf_get = "x" * int(string)
buf_size = 1024
request = "HEAD %s HTTP/1.1/nHost:localhost/n/n" % buf_get
print "===>", request
sock_http = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock_http.connect(("localhost", 80))
sock_http.send(request)
while True:
print "==>", sock_http.recv(buf_size)
if not sock_http.recv(buf_size):
break
sock_http.close()
En 8178 caracteres, recibirá este mensaje: HTTP / 1.1 414 Request-URI Too Large
La longitud oficial de acuerdo con los documentos oficiales de Apache es de 8.192, pero muchas personas han tenido problemas en ~ 4.000.
Generalmente, MS Internet Explorer es el factor limitante, ya que limita el tamaño máximo de la URL a 2.048.
El límite predeterminado para la longitud de la línea de solicitud es 8190 bytes (consulte la directiva LimitRequestLine
). Y si restamos tres bytes para el método de solicitud (es decir, GET
), ocho bytes para la información de la versión (es decir, HTTP/1.0
/ HTTP/1.1
) y dos bytes para el espacio de separación, terminamos con 8177 bytes para la ruta URI plus consulta.
- Internet Explorer: 2,083 caracteres, con no más de 2,048 caracteres en la porción de ruta de la URL
- Firefox: aparecen 65.536 caracteres, pero las URL más largas todavía funcionan incluso más allá de 100.000
- Safari:> 80,000 caracteres
- Opera:> 190,000 caracteres
- IIS: 16,384 caracteres, pero es configurable
- Apache: 4.000 caracteres
De: http://www.danrigsby.com/blog/index.php/2008/06/17/rest-and-max-url-size/