web-dev-qa-db-ja.com

無効なCookieを含むCookieヘッダーが受信されました。

私はmigrating my ServerをTomcat-6からTomcat-9に変更しました。私のウェブサイトはHTTP/1.1のプロトコル用に設計されています。 server.xmlファイルには、コネクタプロトコルorg.Apache.coyote.http11.Http11NioProtocolが含まれています。サーバーは正常に起動し、エラーは発生しません。しかし、localhostを使用して自分のウェブサイトにアクセスしようとすると、次のエラーが発生します:-

INFO [https-nio-8445-exec-3] org.Apache.Tomcat.util.http.parser.Cookie.logInvalidHeader Cookieヘッダーが受信されました[2、3、4、5、6、 7、8、9、10、11、12、21、22、23]; userId = 53136]無効なcookieが含まれていました。そのCookieは無視されます。注:このエラーがさらに発生すると、DEBUGレベルでログに記録されます。

誰かがこのエラーの理由を教えていただけますか?無効なCookieの原因は何ですか?別のコネクタを使用すると、このエラーを回避できますか?

15
Dhumil Agarwal

Tomcat警告がありましたが、cURLリクエストを送信すると、TomcatにデプロイされたAPIがCookieを取得できることがわかりました。

curl -XPOST -H "Content-Type: application/json"  --cookie "userId=64ad960c-bb7e-48dd-8191-4f31539bc2c2,accessToken=64ad960c-bb7e-48dd-8191-4f31539bc2c2" -d '{"message":"play porcupine tree"}' http://localhost:9090/nlu/convo

But警告を削除するには、Tomcat構成(conf/context.xml)のCookieプロセッサ(LegacyCookieProcessor)を更新する必要がありました

例、

cat /usr/local/Apache-Tomcat-8.5.12/conf/context.xml 
<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for each web application -->
<Context>

    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!--
    <CookieProcessor className="org.Apache.Tomcat.util.http.Rfc6265CookieProcessor" />
    -->

    <CookieProcessor className="org.Apache.Tomcat.util.http.LegacyCookieProcessor" />

</Context>

org.Apache.Tomcat.util.http.Rfc6265CookieProcessorは機能すると思っていましたが、機能しませんでした。LegacyCookieProcessorが必要です。

参照

https://Tomcat.Apache.org/Tomcat-8.5-doc/config/cookie-processor.html#Legacy_Cookie_Processor_-_org.Apache.Tomcat.util.http.LegacyCookieProcessor

https://tools.ietf.org/html/rfc6265

LegacyCookieProcessorは、Cookie仕様の厳密な解釈を実装します。ブラウザのさまざまな相互運用性の問題により、すべての厳密な動作がデフォルトで有効になるわけではなく、必要に応じて、このCookieプロセッサの動作をさらに緩和するための追加オプションを利用できます。

4
prayagupd

Fwiw:どういうわけか、私はChromeブラウザを本当にb0rken状態にして、引用符が一致しない不正な形式のCookieを送信するようにしました:"XSRF-TOKEN=93926112-aa12-440e-8e06-02b7fbce27d5;

開発者ツールからCookieをクリアするだけでは不十分でしたが、Clear storageApplicationタブのサイドバーから実行したようです。

0
dtk