Pourquoi je reçois le message “Erreur lors de l'analyse de la requête HTTP en-tête” lors de la Publication d'une chaîne JSON?
J'essaie d'envoyer un POST
demande à partir du navigateur de mon serveur(hôte local). Mon URL est :
http://localhost:8080/myPath/myServlet?requestData={ .......//Json String......};
requestData
est une Chaîne json (je suis à l'aide de GSON pour la fin). Tout fonctionne bien jusqu'à ce que les données dans la chaîne json dépasse une limite. Dire que je suis l'envoi de tableau d'objets dans la chaîne json. Si le nombre d'objets dans la liste dépasse 67
puis-je obtenir de l'erreur suivante :
AM org.apache.coyote.http11.AbstractHttp11Processor process
INFO: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
Pourquoi est-ce donc? Je suis totalement confus. Pourquoi cela se passe et ce qui doit être fait pour résoudre ce problème?
Je veux comprendre la raison derrière tout cela, car je ne comprends pas qu'après un nombre donné d'objets, il s'arrête soudainement de fonctionner et j'ai cette erreur dans ma console.
- Cela semble être un GET au lieu de POST ...
- Il semble que vous êtes de passage à la chaîne json comme un
GET
paramètre, pasPOST
. - double possible de Quelle est la longueur maximale d'une URL dans les différents navigateurs?
- Je suis d'accord que cela pourrait être une double question , Est-il une solution ?
- Vous obtiendrez ce message d'erreur si vous dépassez la longueur des url dans les requêtes get aswell
- Jetez un oeil à ce post: stackoverflow.com/questions/18819180/...
Vous devez vous connecter pour publier un commentaire.
Il me semble que vous êtes à l'aide de POST de manière incorrecte. Bien que vous êtes à l'aide de POST-vous de l'envoi de JSON comme un paramètre de la requête qui est de l'OBTENIR style. Lors de l'utilisation de POST, vous devez envoyer le contenu d'une demande corps. Dans ce cas, aucune limitation de taille existent.
form
tag, définir sesmethod=POST
et configureraction
de votre URL, créer de champ zone de texte, puis rédigez votre JSON y et appuyez sur le boutonsubmit
.J'ai eu un problème similaire, j'ai été l'envoi d'une requête POST (à l'aide de RESTClient plugin pour Firefox) avec les données dans le corps de la requête et de recevoir le même message.
Dans mon cas, ce qui s'est passé parce que j'ai essayé d'utiliser le protocole HTTPS dans un local tomcat instance où HTTPS n'est pas configuré.
Dans mon cas, le problème a été causé par des problèmes de sécurité, j'ai utilisé de la tchécoslovaquie pour l'authentification, et tous mes formulaires poste doit avoir une entrée avec _csrf
Je m'excuse pour ne pas répondre à des questions au sérieux avant.
1.Peut-être causé par des caractères spéciaux.Vous pouvez obtenir des informations à partir de cette url。https://bz.apache.org/bugzilla/show_bug.cgi?id=60594
résoudre par:
ou de modifier votre version de tomcat pour 7.0.67 ou moins.
Selon les développeurs de l'opinion, tomcat développeurs dans les versions suivantes de définir l'option pour permettre à
|,{,}
.Obtenir le détail http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other
La nouvelle variable d'environnement seront inclus dans:
- le tronc pour 9.0.0.M18 à partir de
8.5.x pour 8.5.12 à partir de
8.0.x pour 8.0.42 à partir de
7.0.x pour 7.0.76 onwards2.
Une autre raison, peut-être que l'en-tête de Demande est trop grande.Vous pouvez résoudre ce problème en modifiant la
server.xml
.Espère que cela fonctionne pour vous!
À mon humble avis, le problème de l'analyse des en-têtes peut être causée par de nombreuses raisons.
Dans mon cas c'était dû au fait que le code XML suivant a été adopté:
Le vide d'un élément d'en-tête a été généré par SoapUI.
Après le retrait de la
<soapenv:Header/>
de l'XML de la WS alors que tout allait bien.J'ai corrigé cela en passant un en-tête supplémentaire
connection: close, avec la demande.
Pourriez-vous s'il vous plaît essayer et laissez-moi savoir si cela fonctionne pour vous.