我是一名开发人员,当Cookie包含umlaut字符(ä,ö,ü)时,我会遇到下面的例外,我尝试了许多解决方案和配置,但没有任何结果。
我使用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)
现在我遇到了同样的问题,首先我尝试将tomcat 7升级到tomcat 8.5.51,但它工作正常,但出现了新问题
java.lang.IllegalArgumentException: An invalid domain [.foo.bar.com] was specified for this cookie
因为我不需要cookie在我的情况下,所以我只是排除cookie在Nginx级别,它也可以解决这个问题
proxy_set_header Cookie "";
使用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
根据对另一个问题的评论,您需要升级到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>
我有这三个字符串: 我如何检查这些字符串中哪一个只包含字母还是只包含数字(用R表示)? 只能在字母检查中为TRUE 它对很有效,但对也很有效,这是我不想要的。 提前谢了。
问题内容: 我正在构建一个模拟器,以将JSON数据发布到正在运行的服务中。 JSON应该如下所示: 我在Chrome中使用“高级REST客户端”进行了尝试,效果很好。ServiceStack Web服务会正确解析日期获取。 因此,关键是编写一个传感器模拟器,将这样的数据发布到Web服务。 我用Java创建了它,因此可以在树莓派上运行它。 这是代码: 该程序的输出如下: 这里的问题是JSONObje
我能够通过使用下面这个问题的注释提供的代码来解决这个问题。所有其他帖子都是有效的! 我使用的有用的东西来自第一个评论。虽然提供的所有示例代码似乎也是有效的!
问题内容: 我一直在尝试找出如何使用MySQL进行查询的方法,该查询检查特定列中的值(字符串)是否包含某些数据(字符串),如下所示: 在PHP中,该函数称为,因此可能: 问题答案: 实际上很简单: 的是用于设置任何字符(无,一个或多个)的通配符。请注意,这在非常大的数据集上可能会变慢,因此,如果数据库增长,则需要使用全文索引。
如何在包含字符的文件上执行gradle processResources,而不转义文件中的字符? 我有一些静态html文件,位于Spring Boot参考文档建议的“资源/静态”文件夹中。然而,当我尝试执行gradle processResources时,gradle抛出了一个异常 据我所知,出现此问题的原因是,其中一个静态文件中有一个字符,并且在处理资源时,它是表达式的保留字符。 建议的解决方案