我无法理解发生了什么。在其中一个环境。我的webapp(使用ExtJS 4.0编写) - 我看到登录请求成功完成,但后续请求因401失败。
当我在浏览器(F12)中发现更多时,我发现第一个请求的响应头有JSESSIONID,它被设置为cookie,但是第二个请求并没有在它的请求头中发送它。这就是为什么第二个请求创建一个新会话并返回一个新的JSESSIONID。
在发送请求的客户端代码中,
Ext.Ajax.request({url:'', callback..})
- 没有明确设置JSessionId或任何cookie。
奇怪的部分并非所有cookie密钥都缺失,只有JSESSIONID,这意味着cookie不会被浏览器禁用和设置。
为什么浏览器不发送JSESSIONID?我在firefox / chrome中试过这个。
这种情况只发生在我当地的环境,QA环境中。 webapp的工作正常。
答案 0 :(得分:4)
我自己想出来......这就是问题所在 http://tomcat.apache.org/migration-7.html#Session_cookie_configuration
感谢所有花时间阅读我的问题的人。
答案 1 :(得分:0)
akjain给出的答案是正确的。但是,如果有人需要代码段,那么它(在web.xml
中添加):
<session-config>
<cookie-config>
<http-only>false</http-only>
<secure>false</secure>
</cookie-config>
</session-config>