HTML en la solicitud GET es una "solicitud incorrecta" solo en un servidor

Estoy desarrollando una herramienta de carga de contenido que actualmente está obteniendo los datos html en la URL.

(Por ejemplo: "this is my <strong>content<strong> --enviar -> http://site.com/?content=this+is+my+<strong>+content+<strong>)

Me doy cuenta de que esta es una mala manera de hacerlo y estoy trabajando en un reemplazo, pero necesitaré que esto funcione para mis usuarios por el momento.

Cuando probé esto en mi máquina (host virtual) funcionó bien, pero ahora que lo tengo en mi servidor Nexcess, devuelve "solicitud incorrecta". Supongo que esto tiene algo que ver con una configuración de Nexcess.

Aquí hay un ejemplo de una de esas solicitudes.

¿Hay algún tipo de configuración que pueda desactivar por el momento?

preguntado el 30 de enero de 12 a las 19:01

Por cierto: su ejemplo es una solicitud de obtención, no una solicitud de publicación. -

Vaya, tienes razón. Yo editaré. -

No es que importe, todavía recibí una solicitud incorrecta de la solicitud de obtención. -

No, podría importar. Siempre fue una solicitud de obtención. Lo escribí mal aquí. Le daré una oportunidad a la solicitud de publicación. -

Normalmente, esto se explicaría en el registro de errores del servidor ....

3 Respuestas

Lo más probable es que se deba a que la URL es demasiado larga (específicamente la cadena de consulta).

Por lo que parece, eres no Publicando los datos, pero están obteniendo los datos. El simple hecho de cambiar el formulario de GET a POST probablemente solucionará el problema, ya que los datos POST no tienen una longitud tan restringida como tienden a ser los datos GET.

Respondido el 30 de enero de 12 a las 23:01

Si los datos están en la cadena de URL, es un GET, no un POST. Este podría ser su problema, dependiendo de cómo lo interprete en la página.

También puede que no le guste que tenga ?food-name=&food-source=. Es posible que no esté definiendo un valor obligatorio para una de estas claves.

EDITAR

Verificaría que toda la codificación de caracteres se realiza correctamente. Pero realmente, este es el tipo de cosas que querrás hacer a través de la publicación, no con una solicitud de obtención ...

2da EDICION

Cuando probé esta cadena en mi propio servidor e imprimí el resultado $_GET matriz esto es lo que tengo:

Array ([food-name] => [food-source] => [testingName] => [testing-source] => [theName] => ¡Vivo! [TheCity] => San% 20Francisco [theState] => California [ theCountry] => United% 20States [theAddress] => 1972% 20Lombard% 20Street% 20San% 20Francisco% 20CA [theLat] => 37.800409 [theLng] => -122.43401900000003 [location] => Alive% 20Restaurant,% 20Lombard% 20Street, % 20San% 20Francisco,% 20CA [status% 5B% 5D] => Vegano [lugar-fuente] => vivo [tipo] => lugar)

Probablemente reconozca en esa matriz que falta una gran cantidad de la cadena de consulta en la matriz. En algún lugar, la cadena de consulta tiene un error. Sin embargo, mi servidor no arroja un error, simplemente deja de leer la cadena.

Respondido el 30 de enero de 12 a las 23:01

(a su segundo punto) Verdadero, pero eso probablemente devolvería un error de php en la página siguiente que un error de solicitud incorrecta. - Adam Grant

de acuerdo, pero supongo que hay un error en la cadena de consulta que no le gusta. Esto realmente debería hacerse a través de POST. - VictorKilo

Mos def. Estoy intentando eso ahora. Gracias. - Adam Grant

La especificación del protocolo HTTP no especifica ninguna longitud máxima, los límites prácticos los impone el navegador web y el software del servidor.

Las URL extremadamente largas suelen ser un error. Las URL de más de 2,000 caracteres no funcionarán en el navegador web más popular. No los utilice si pretende que su sitio funcione para la mayoría de los usuarios de Internet.

Entonces yo diría que en su caso, absolutamente no hay forma de que pueda garantizar que funcionará. realmente depende de la longitud de la URL, el tipo de servidor y el navegador que utilizan sus clientes.

Tal vez gzcompress () puedo ayudarte. Pero esto dará como resultado caracteres no permitidos, por lo que tendrá que usar urlencode () también. pero de nuevo, realmente debes considerar no usar GET aquí :)

Respondido el 31 de enero de 12 a las 01:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.