我们正在从Tomcat 6.x迁移到Tomcat 8.5.28。我们从第一次登录本身就遇到了以下问题。似乎Tomcat 8.5.28版本在Cookie中添加了httpOnly属性。如何避免这种情况。由于此属性,我的客户端无法在Java API级别自行解析
java.net.ProtocolException: Bad Set-Cookie header: JSESSIONID=09E13BB21C867AEA7B7BBECA3E4CDCCD; Path=/CSCOnm/servlet; Secure; HttpOnly
No '=' found for token starting at position 75
at HTTPClient.Cookie.parse(Cookie.java:248)
at HTTPClient.CookieModule.handleCookie(CookieModule.java:442)
at HTTPClient.CookieModule.responsePhase1Handler(CookieModule.java:391)
at HTTPClient.HTTPResponse.handleResponse(HTTPResponse.java:726)
at HTTPClient.HTTPResponse.getInputStream(HTTPResponse.java:566)
at HTTPClient.HttpURLConnection.getInputStream(HttpURLConnection.java:611)
at java.net.URLConnection.getContent(Unknown Source)
我已经按照一些建议在web.xml中配置如下。但没有运气
<session-config>
<cookie-config>
<http-only>false</http-only>
</cookie-config>
<session-config>
任何身体能帮助我吗?如何解决这个问题..我在第一页本身被阻止了。
答案 0 :(得分:0)
通过修改Apache服务器中的HTTP头修复了这个问题。我们在Tomcat前面使用Apache服务器。所以我在httpd.conf中添加了以下代码来删除这个不需要的属性。它解决了这个问题。
Header edit* Set-Cookie "(JSESSIONID=.*)(; Secure)" "$1"
Header edit* Set-Cookie "(JSESSIONID=.*)(; HttpOnly)" "$1"
Header edit* Set-Cookie "(JSESSIONID=.*)(; No \'=\')" "$1"