我们正尝试使用'%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 "%r" %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?
答案 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 "%r" %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。