6

私は開発者であり、Cookie にウムラウト文字 (ä、ö、ü) が含まれている場合、以下の例外に直面しています。多くの解決策と構成を試しましたが、結果はありませんでした。

私はTomcat7を使用しています

解決策をお願いします

Feb 21, 2013 6:29:16 AM org.apache.coyote.http11.AbstractHttp11Processor process
SEVERE: Error processing request
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
    at org.apache.tomcat.util.http.CookieSupport.isHttpSeparator(CookieSupport.java:193)
    at org.apache.tomcat.util.http.Cookies.getTokenEndPosition(Cookies.java:488)
    at org.apache.tomcat.util.http.Cookies.processCookieHeader(Cookies.java:291)
    at org.apache.tomcat.util.http.Cookies.processCookies(Cookies.java:168)
    at org.apache.tomcat.util.http.Cookies.getCookieCount(Cookies.java:106)
    at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:919)
    at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:688)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:402)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1600)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
4

3 に答える 3

3

別の質問に対するコメントによると、Tomcat 8.0.15 (またはそれ以上) にアップグレードし、RFC 6455 Cookie プロセッサを有効にする必要があります。ここに文書化されています: http://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html

次の方法で conf/context.xml で有効にします。

<Context>
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor" />
</Context>
于 2015-07-14T13:36:06.123 に答える
0

UTF-8 エンコーディングを使用します。

グローバルに設定することもできます:

java -Dfile.encoding=UTF-8

またはローカルで:

System.setProperty("file.encoding", "UTF-8");

byte inbytes[] = new byte[1024];
FileInputStream fis = new FileInputStream("the.location.of.your.cookie");
fis.read(inbytes);

また、Cookie を手動で編集している場合は、保存しないでください。代わりに、同等の UTF-8 を使用します。

System.out.println("\u00c4");



Chars   Unicode
------------------------------
Ä, ä    \u00c4, \u00e4
Ö, ö    \u00d6, \u00f6
Ü, ü    \u00dc, \u00fc
ß       \u00df
于 2014-05-01T17:01:48.167 に答える