![为什么 mod_usertrack 没有设置 cookie?](https://linux22.com/image/790225/%E4%B8%BA%E4%BB%80%E4%B9%88%20mod_usertrack%20%E6%B2%A1%E6%9C%89%E8%AE%BE%E7%BD%AE%20cookie%EF%BC%9F.png)
我在 docker 中运行 httpd:2.4.57。我还没有弄清楚如何设置或查看 mod_usertrack 设置的 cookie。我检查了两个浏览器以确保允许 cookie。
我验证了 mod_usertrack.so 文件存在于容器中并且被正确引用。
$ ls -al | grep usertrack
-rwxr-xr-x 1 httpd httpd 43976 Oct 11 20:23 mod_usertrack.so
这些是 httpd.conf 中的指令:
LoadModule usertrack_module modules/mod_usertrack.so
CookieTracking on
CookieName session_id
CookieHTTPOnly on
CookieSecure off
CookieStyle RFC2965
CookieSameSite Strict
LogLevel warn
<IfModule log_config_module>
LogFormat "%{session_id}n %r %t" common
CustomLog /proc/self/fd/1 common
</IfModule>
下面是我的日志输出内容的示例:
- GET /api/pictures HTTP/1.1 [23/Oct/2023:19:27:29 +0000]
根据我在https://httpd.apache.org/docs/2.4/mod/mod_usertrack.html,应设置一个名为 session_id 的 cookie。我在日志中或 Chrome 或 Firefox 中的 webdev 工具中都看不到该 cookie。
curl -I ...
根据 @vidarlo 的要求,下面是我必须添加--insecure
以忽略我的自签名证书的输出:
$ curl -I --insecure https://localhost:8443
HTTP/1.1 200 OK
Date: Mon, 23 Oct 2023 19:50:58 GMT
Server: Apache
Set-Cookie2: session_id=87aa60b1.608678a7cc2f9; path=/; SameSite=Strict; Secure; HttpOnly
Last-Modified: Fri, 20 Oct 2023 14:46:20 GMT
ETag: "1e7f-60826ef88e48a"
Accept-Ranges: bytes
Content-Length: 7807
Content-Type: text/html
答案1
有趣而出乎意料的是,session_id 的值随着每次请求而改变。
这并不意外。它产生了除非请求中存在先前的值。
有趣的是,我发现它设置了 Set-Cookie2 标头,而不仅仅是 Set-Cookie。这可以解释为什么它没有出现在我的 webdev 工具中。
尝试添加
CookieStyle Cookie
https://httpd.apache.org/docs/2.4/mod/mod_usertrack.html#cookiestyle