web.xml配置HttpOnly、Secure属性时Payara部署报错如何解决
问题原因
这个部署错误是web.xml中<cookie-config>节点下的子元素顺序不符合Servlet 4.0规范的XSD校验要求导致的。
web-app 4.0版本对应的XML Schema对<cookie-config>内的子节点有严格的顺序约束,解析器会按定义的顺序逐节点校验,不允许乱序排列。你当前的配置把<secure>节点写在了<http-only>节点前面,解析器读取到<secure>后,会判定你已经跳过了可选的<http-only>配置,后续仅允许出现<max-age>节点,因此读到后面的<http-only>时就抛出了内容非法的错误。
<cookie-config>节点规定的合法子元素顺序(可选节点可省略,但出现时必须按以下顺序排列):
<name><domain><path><comment><http-only><secure><max-age><attribute>(Servlet 4.0新增,用于自定义Cookie属性)
解决方法
调整<cookie-config>内的节点顺序,把<http-only>移动到<secure>之前即可,修正后的完整配置如下:
<session-config> <session-timeout>60</session-timeout> <cookie-config> <http-only>true</http-only> <secure>true</secure> <max-age>1800</max-age> </cookie-config> </session-config>
替换原有配置后重启Payara Server即可正常部署,你配置的HttpOnly、Secure标记、会话超时限制都是防范会话劫持的有效措施,调整顺序后不会影响这些安全配置的生效。
内容的提问来源于stack exchange,提问作者Buddhika Ariyaratne
相关产品推荐
相关产品推荐

