2010-11-18 12 views
5

Me siento bastante estúpido por preguntar esto, pero estoy haciendo un formulario donde el usuario ingresa una entrada y, a veces, la entrada es un símbolo de porcentaje, digamos un 5%. Cuando esto se transfiere como parte de una solicitud GET, así:¿Por qué un símbolo de porcentaje en una solicitud get rompe mi sitio?

http://kburke.org/thesis/company_x/?id=4&var1=1&ops=23255&cashflow=25000&growth=5%25&pv=100000&roe=20&profitmargin=30&roe=80&turnover=2 

Aparece el error 404 Página no encontrada. Cuando elimino el par de cadena de consulta

&growth=5%25 

la página carga bien. ¿Alguien puede ayudar a explicar cuál es el problema?

Editar: Intenté eliminar todo el Javascript de la página y el servidor sigue produciendo. También intenté ejecutarlo en MAMP como

http://localhost:8888/thesis/company_x/?id=4&var1=1&ops=23255&cashflow=25000&growth=5%25&pv=100000&roe=20&profitmargin=30&roe=80&turnover=2 

y funcionó bien. Me pregunto si es un problema con mi propio servidor. Cuando abro Firebug en la consola y ejecuto la página, veo un error muy brevemente y luego se carga la página 404: ¿hay alguna manera de detener el redireccionamiento para que pueda leer el mensaje de error?

+3

El URL que se escapa es correcto. El servidor está haciendo algo por alguna razón. Sin saber más sobre los detalles de la aplicación del servidor, solo podemos adivinar qué está mal. – cdhowie

Respuesta

9

Echa un vistazo URL ENCODING. El carácter "%" en una url significa algo especial.

Codifica el carácter de espacio '' como% 20 en una url. Codifica el carácter de porcentaje '%' como% 25 en una url.

Así que después de que su url llegue a la secuencia de comandos, su argumento 'crecimiento' será igual a "5%".

Intenté dar vueltas con su url y parece que su script falla cuando intenta analizar el argumento de crecimiento, y su sitio web está ocultando ese bloqueo al enviarlo a la página 404. Publicaría el código del script si necesita más ayuda.

+0

Traté de eliminar todo el Javascript de la página ofensiva y aún obtuve el error 404. También intenté ejecutarlo en MAMP y no obtuve un error. ¿Eso ayuda a reducir el problema? –

Cuestiones relacionadas