WAS Liberty配置文件java.lang.IllegalArgumentException:Cookie名称“Path”是保留令牌

时间:2013-05-17 12:03:07

标签: websphere-liberty

我在尝试访问已部署的war应用程序时遇到异常。

环境详情: 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>

有人可以为此提供帮助吗?

2 个答案:

答案 0 :(得分:1)

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

  • 评论
  • 丢弃
  • 到期
  • 最大年龄
  • 路径
  • 安全
  • 版本

此外,由于Cookie不区分大小写 [2] ,因此“路径”会引发与“路径”相同的java.lang.IllegalArgumentException

至于限制,cookie名称:

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

=)

参考

  1. "Cookie Reserved Names- Who's to blame?" article
  2. RFC 2109 specification(分别参见第4.1和4.2.2节)
  3. Java EE 6 Cookie constructor documentation

答案 1 :(得分:0)

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

  

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