0

尝试访问已部署的战争应用程序时出现以下异常。

环境详细信息:WAS Liberty Profile 和 IBM JDK 6

<pre>
Exception = java.lang.IllegalArgumentException
Source = com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters
probeid = 1105
Stack Dump = java.lang.IllegalArgumentException: Cookie name "Path" is a reserved token
    at javax.servlet.http.Cookie.<init>(Cookie.java:139)
    at com.ibm.ws.webcontainer.osgi.request.IRequestImpl.getCookies(IRequestImpl.java:147)
    at com.ibm.ws.webcontainer.srt.SRTServletRequest.getCookies(SRTServletRequest.java:1600)
    at com.ibm.ws.webcontainer.security.internal.WebRequestImpl.determineIfRequestHasAuthenticationData(WebRequestImpl.java:155)
    at com.ibm.ws.webcontainer.security.internal.WebRequestImpl.hasAuthenticationData(WebRequestImpl.java:176)
    at com.ibm.ws.webcontainer.security.internal.WebAppSecurityCollaboratorImpl.optionallyAuthenticateUnprotectedResource(WebAppSecurityCollaboratorImpl.java:392)
    at com.ibm.ws.webcontainer.security.internal.WebAppSecurityCollaboratorImpl.performSecurityChecks(WebAppSecurityCollaboratorImpl.java:343)
    at com.ibm.ws.webcontainer.security.internal.WebAppSecurityCollaboratorImpl.preInvoke(WebAppSecurityCollaboratorImpl.java:327)
    at com.ibm.wsspi.webcontainer.collaborator.CollaboratorHelper.preInvokeCollaborators(CollaboratorHelper.java:431)
    at com.ibm.ws.webcontainer.osgi.collaborator.CollaboratorHelperImpl.preInvokeCollaborators(CollaboratorHelperImpl.java:267)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1033)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:81)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:930)
    at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$1.run(DynamicVirtualHost.java:253)
    at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:457)
    at com.ibm.ws.threading.internal.Worker.executeWork(Worker.java:398)
    at com.ibm.ws.threading.internal.Worker.run(Worker.java:380)
    at java.lang.Thread.run(Thread.java:770)
</pre>

有人可以帮忙吗?

4

2 回答 2

1

cookie 名称存在限制,包括保留名称/令牌的选择[1]。(在这种情况下无需担心具体环境。)=)您可能不会使用以下任何名称(此列表可能并不详尽):

  • 评论
  • 丢弃
  • 领域
  • 过期
  • 最大年龄
  • 小路
  • 安全的
  • 版本

此外,由于 cookie 不区分大小写[2],“路径”将触发与“路径”相同的火花java.lang.IllegalArgumentException

至于限制,cookie名称:

  • 不得为 null 或为空[3]
  • 不得包含任何空格[3]
  • 不得以$[2]开头
  • 不得包含逗号,或分号;[3]

=)

参考

  1. “Cookie 保留名称——这该怪谁?” 文章
  2. RFC 2109 规范(分别参见第 4.1 和 4.2.2 节)
  3. Java EE 6 Cookie 构造函数文档
于 2014-05-17T20:32:40.767 回答
0

从堆栈跟踪来看,来自客户端(可能是浏览器?)的 cookie 的名称似乎无效。根据 Cookie java doc,cookie 名称中不允许使用某些保留字。

java.lang.IllegalArgumentException - 如果 cookie 名称为 null 或空或包含任何非法字符(例如,逗号、空格或分号)或匹配保留供 cookie 协议使用的令牌

于 2013-06-14T06:51:28.800 回答