kk.*_*kk. 8 javascript session tomcat angularjs
我们正尝试使用'%S'in 在访问日志中打印会话ID server.xml.该应用程序是使用角度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 "%r" %s %b" />
Run Code Online (Sandbox Code Playgroud)
访问日志:
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
Run Code Online (Sandbox Code Playgroud)
angular js应用程序是否自动创建会话ID?
会话 ID 仅在您的服务器端应用程序创建会话 ID 时才会显示,这取决于您正在使用的框架...例如,如果请求中没有会话 ID,Spring MVC 总是创建一个新的会话 ID。
让我展示一个使用 Spring MVC 项目和 Tomcat 进行的简单测试:
考虑我的 server.xml 中的以下代码片段
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b session-id %S" />
Run Code Online (Sandbox Code Playgroud)
考虑一下我在第一次访问打开图像时没有任何 cookie:
127.0.0.1 - - [26/Jun/2017:18:40:53 -0300] "GET /webapp/images/login.png HTTP/1.1" 200 29646 session-id -
Run Code Online (Sandbox Code Playgroud)
由于它是一个不由 Spring 处理的图像,我的服务器不会创建会话 id...再次访问将无济于事
127.0.0.1 - - [26/Jun/2017:18:42:52 -0300] "GET /webapp/images/login.png HTTP/1.1" 304 - session-id -
Run Code Online (Sandbox Code Playgroud)
但是如果我访问 Spring MVC 处理的方法,它将创建一个新会话(并且我无法完全控制会话的创建)
127.0.0.1 - - [26/Jun/2017:18:45:16 -0300] "GET /webapp/pages/users.json HTTP/1.1" 200 110 session-id 068FCCF5BC04EDEEC830E3E8CDF2CCDB
Run Code Online (Sandbox Code Playgroud)
现在,访问之前的相同图像,客户端将在请求中发送会话 ID,Tomcat 将能够记录它
127.0.0.1 - - [26/Jun/2017:18:48:09 -0300] "GET /webapp/images/login.png HTTP/1.1" 200 29646 session-id 068FCCF5BC04EDEEC830E3E8CDF2CCDB
Run Code Online (Sandbox Code Playgroud)
因此不会为图像、脚本或其他静态资源创建会话 ID。但这实际上取决于您的实现或您正在使用的框架...正如您所知,JSESSIONID 位于Servlet 3.0 规范中(第 7.1.1 章 cookies,第 55 页)。
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |