重新设置了WEB服务器之后,发现一些账号无法登陆
服务器是用 apt 方式安装的 Apache2 + php-fpm
1. 之前怀疑是 302 重定向到问题,但是 a2enmod/a2dismod rewrite 之后,均无法解决此问题。
2. 用chrome登陆一个文件管理器,由于单个文件好调试,F12之后,
3. F12之后,发现全是英文,经过一番摸索,终于设置到了 中文。
4. 偶尔发现响应头中有个黄色的三角符号,吃惊之余看到
set-cookie:;HttpOnly;Secure
这不就是 mod_headers模块的问题吗?可能是Apache2版本的问题,导致之前虚拟机中设置的header在当前版本中存在语法问题。
到这里问题是找到了,先了解一下 Cookie安全相关属性
HttpOnly :将HttpOnly 设置为true ,通过程序(JS脚本、Applet等)将无法读取到Cookie信息,防止程序获取cookie后进行攻击。
Secure :设置了Secure (没有值),则只有当使用https协议连接时cookie才可以被页面访问,防止信息在传递的过程中被监听捕获后信息泄漏。
打开虚拟机相关的配置文件,看到一行
Header edit Set-Cookie ^(.*)$ ;HttpOnly;Secure
看起来没问题,谷歌搜索之后,发现还是有语法问题,少了红色的 $1 ,可能是Apache设置引起的差异。
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
5. 给 Header edit Set-Cookie ^(.*)$ ;HttpOnly;Secure 增加了 $1 问题解决,
程序的问题就是这个神奇,程序员为什么会猝死,为什么是吃青春饭的,由此可得到答案,实在比在放大镜下面看蚊子的牛牛还艰辛。
远离IT,则人生幸福
6. 这问题在PHP、nginx也可以处理。
PHP
php.ini 文件开启以下两行,默认大概位于 1390左右 session.cookie_httponly=true session.cookie_secure = 或者在 php 代码中使用 ini_set 函数设置 @ini_set('session.cookie_httponly', 'On'); @ini_set('session.cookie_secure', 'On'); @ini_set('session.use_only_cookies', 'On');
Nginx
Nginx.conf 文件中设置 http{ } 或 server{ } add_header Set-Cookie "HttpOnly"; add_header Set-Cookie "Secure";
到此,问题已经基本处理完毕,在此做个记录,以裨益网友
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!