web-dev-qa-db-ja.com

JSON文字列をPOSTするときに「HTTPリクエストヘッダーの解析エラー」が表示されるのはなぜですか?

ブラウザからサーバー(ローカルホスト)にPOSTリクエストを送信しようとしています。私のリクエストURLは:

 http://localhost:8080/myPath/myServlet?requestData={  .......//Json String......};

requestDataはjson文字列です(この目的のためにGSONを使用しています。)json文字列のデータが特定の制限を超えるまで、すべてが正常に機能しています。たとえば、json文字列でオブジェクトの配列を送信しています。リスト内のオブジェクトの数が67を超えると、次のエラーが発生します。

 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.

これはなぜですか?私は完全に混乱しています。なぜこれが起こり、これを修正するために何をする必要があるのですか?特定の数のオブジェクトの後に突然動作を停止し、コンソールでこのエラーが発生することを理解していないため、この理由を理解したいと思います。

6
user3686864

同様の問題があり、リクエスト本文にデータを含むPOSTリクエスト(Firefox用RESTClientプラグインを使用))を送信し、同じメッセージを受信して​​いました。

私の場合、これは、HTTPSが構成されていないローカルのTomcatインスタンスでHTTPSプロトコルを使用しようとしたために発生しました。

4
nkatsar

POSTを誤って使用しているようです。 POSTを使用していますが、GETスタイルのリクエストパラメータとしてJSONを送信しています。 POSTを使用する場合は、コンテンツをリクエストとして送信する必要がありますbody。この場合、妥当なサイズ制限はありません。

4
AlexR

私の場合、問題はセキュリティの問題が原因でした。認証にcsrfを使用しました。すべての投稿フォームに_ csrfを入力する必要があります

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
1
Daria

以前は真剣に質問に答えなかったことをお詫びします。

1.特殊文字が原因の可能性があります。このURLから詳細を取得できます。 https://bz.Apache.org/bugzilla/show_bug.cgi?id=60594

それを解決する:

encodeURIComponent(JSON.stringify(data))

または、Tomcatのバージョンを7.0.67以下に変更します。開発者の意見によると、次のバージョンのTomcat開発者は、|,{,}を許可するオプションを設定しています。詳細を取得 http://Tomcat.Apache.org/Tomcat-8.0-doc/config/systemprops.html#Other

新しい環境変数は次の場所に含まれます。-9.0.0.M18以降のトランク

  • 8.5.12以降の8.5.x

  • 8.0.x(8.0.42以降)

  • 7.0.x以降(7.0.76以降)2。

別の理由として、リクエストヘッダーが大きすぎる可能性があります。server.xmlを変更することで解決できます。

<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" 
    minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
    redirectPort="8443" acceptCount="100" connectionTimeout="20000" 
    disableUploadTimeout="true" />

うまくいきますように!

1
轩加振

追加のヘッダーを渡すことでこれを修正しました

connection:closeとリクエスト。

これで問題が解決するかどうか試してみてください。

0
Manish Singh

ヘッダーの解析に関する問題は、さまざまな理由で発生する可能性があります。

私の場合、次のXMLが渡されたことが原因です。

<soapenv:Header/>

空のヘッダー要素はSoapUIによって生成されました。 WSのXMLから<soapenv:Header/>を削除した後、すべてが順調でした。

0
Rudy Vissers