获取角度js应用程序的tomcat访问日志中的会话ID

时间:2017-05-12 13:53:12

标签: javascript angularjs session tomcat

我们正尝试使用'%S'中的server.xml在访问日志中打印会话ID。该应用程序是使用角度js开发的。

然而,它打印“ - ”而不是会话ID。

server.xml中

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="sessionId=%S host=%h %l %u %t &quot;%r&quot; %s %b" />

访问日志:

sessionId=- host=127.0.0.1 - - [12/May/2017:13:44:32 +0100] "GET /application/img/sort-icn-down.png HTTP/1.1" 200 1114

angular js应用程序是否自动创建会话ID?

2 个答案:

答案 0 :(得分:2)

会话ID仅显示您的服务器端应用程序是否创建一个,并且这取决于您使用的框架...例如,Spring MVC总是创建一个新的会话ID,如果有的话请求中没有会话ID。

让我展示一个简单的测试,我使用Spring MVC项目和Tomcat:

请考虑我的server.xml中的以下代码段

genre_application(application_id, genre_id)

请注意,在我第一次访问时,我没有任何Cookie会打开图片:

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b session-id %S" />

由于它是一张未由Spring处理的图片,我的服务器无法创建会话ID ...再次访问无济于事

127.0.0.1 - - [26/Jun/2017:18:40:53 -0300] "GET /webapp/images/login.png HTTP/1.1" 200 29646 session-id -

但是如果我访问由Spring MVC处理的方法,它将创建一个新的会话(并且我不能完全控制会话的创建)

127.0.0.1 - - [26/Jun/2017:18:42:52 -0300] "GET /webapp/images/login.png HTTP/1.1" 304 - session-id -

现在,从以前访问相同的图像,客户端将在请求中发送会话ID,Tomcat将能够记录它

127.0.0.1 - - [26/Jun/2017:18:45:16 -0300] "GET /webapp/pages/users.json HTTP/1.1" 200 110 session-id 068FCCF5BC04EDEEC830E3E8CDF2CCDB

因此,不会为图像,脚本或其他静态资源创建会话ID。但这完全取决于您的实施或您正在使用的框架...... 您知道,JSESSIONID位于Servlet 3.0 specification(ch 7.1.1 cookies,第55页)。

答案 1 :(得分:-1)

不,Angular JS不会为您生成sessionId。您应该在服务器端生成和管理sessionId。