102 次浏览【转载需注明来源】
博客作者:【野生程序菌】
以下所述的是一个验签的程序逻辑。场景是用户还在登录后的页面,COOKIES到期后或失效后就经过301跳转到登录页。
前端是内联框架,通过接口向服务端POST请求的,无法通过访问信息["主动301跳转"]跳转。
只有手动刷新网页后才会进行301跳转,但是前端打开新的栏目也不会进行301跳转(按理这个也是相当于刷新网页了)!
主要想解决:
1、通过接口请求能301跳转
2、通过切换栏目能301跳转
第1条难办,就实现第2条也可以。
1710843490850636.rar
按照你的修改的. 你要的清除后直接返回登录页
这个是业务逻辑的问题,通过地址栏访问肯定是可以301跳转;如果不能可以提供一个简单的不能301跳转的访问案例
局部变量 模板数据 = {}; 局部变量 返回消息, 后台框架, 时间, 地址, 浏览器, 系统, 执行信息; 如果 (访问信息["参数信息"]["page"] == 1 || 访问信息["cookie"].长度 != 0) { 局部变量 浏览器信息 = 格式化浏览器信息(访问信息["协议头部"]["user-agent"]); 浏览器 = 浏览器信息.浏览器; 系统 = 浏览器信息.系统; 地址 = 访问信息["IP"]; 时间 = 新建对象 日期类(); 时间 = 时间.转当地时间(); 时间 = 时间.替换所有("/", "-"); } 如果 (访问信息["参数信息"]["page"] == "tcdl") { 返回消息 = { "状态": "成功", "数据": "退出成功" }; 访问信息["主动发送"]({ "发送数据": JSON类.到可读JSON文本(返回消息), "数据协议": HTTP服务类.获取数据协议("json"), "cookie": [{ "名称": "ylboleSystem", "cookie": "" }], "过期时间": 60 }); 返回; } 如果 (访问信息["参数信息"]["page"] == "yzm") { 生成验证码.重新生成(); 返回消息 = { "状态": "成功", "数据": 生成验证码 }; 访问信息["主动发送"]({ "发送数据": JSON类.到可读JSON文本(返回消息), "数据协议": HTTP服务类.获取数据协议("json") }); 返回 真; } 如果 (访问信息["参数信息"]["page"] == 1) { 局部变量 账号 = 访问信息["表单对象"]["username"]; 如果 (生成验证码.验证(访问信息["表单对象"]["code"])) { 局部变量 密码 = 访问信息["表单对象"]["password"]; 局部变量 账号查询 = 同步 sqlite客户端.查询SQL语句_同步("select * from 账号管理 where 账号 = ?", [账号]); 局部变量 登录次数 = 账号查询["数据"][0]["登录次数"]; 如果 (非数字判断(文本到整数(登录次数)) == 真) { 登录次数 = 0; } 如果 (账号查询["数据"].长度 === 1) { 密码 = MD5类.取MD5(密码); 如果 (账号查询["数据"][0]["密码"] === 密码) { 变量 D = 新建对象 日期类(); 局部变量 ucode = MD5类.取MD5(地址 + 账号 + 密码 + D.取时间戳_13位()); 登录次数 = 登录次数 + 1; 执行信息 = 同步 sqlite客户端.执行SQL语句_同步("update 账号管理 set code = ? ,登录时间 = ? ,登录次数 = ?,登录地址 = ? where 账号 = ?", [ucode, 时间, 登录次数, 地址, 账号]); 执行信息 = 同步 sqlite客户端.执行SQL语句_同步("insert into 系统日志(用户,操作,时间,地址,浏览器,系统) values(?,?,?,?,?,?)", [账号, "登录成功", 时间, 地址, 浏览器, 系统]); 返回消息 = { "状态": "成功", "数据": "登录成功" }; 访问信息["主动发送"]({ "发送数据": JSON类.到可读JSON文本(返回消息), "数据协议": HTTP服务类.获取数据协议("json"), "cookie": [{ "名称": "ylboleSystem", "cookie": ucode }], "过期时间": 6000 * 6000 * 240000 }); 返回; } 否则 { 返回消息 = { "状态": "失败", "数据": "密码错误" }; } } 否则 { 返回消息 = { "状态": "失败", "数据": "账号不存在" }; } } 否则 { 生成验证码.重新生成(); 返回消息 = { "状态": "失败", "数据": "验证码错误", "验证码": 生成验证码["图片地址"] }; } 执行信息 = 同步 sqlite客户端.执行SQL语句_同步("insert into 系统日志(用户,操作,时间,地址,浏览器,系统) values(?,?,?,?,?,?)", [账号, "登录失败!", 时间, 地址, 浏览器, 系统]); 访问信息["主动发送"]({ "发送数据": JSON类.到可读JSON文本(返回消息), "数据协议": HTTP服务类.获取数据协议("json") }); 返回 真; } 如果 (访问信息["cookie"].长度 != 0) { 变量 返回查询 = { "数据": "" }; 返回查询 = 同步 sqlite客户端.查询SQL语句_同步("select * from 账号管理 where code=?", [访问信息["cookie对象"]["ylboleSystem"]]); 如果 (返回查询["数据"].长度 === 1) { 发送后台页面(访问信息, 整体信息, 返回查询["数据"][0]); 返回 真; } } 生成验证码.重新生成(); 模板数据["验证码"] = 生成验证码["图片地址"]; 后台框架 = 文件操作类.读入文件(文件操作类.取资源目录() + "/@名称_登录页面.lhtml"); 访问信息["主动发送"]({ "发送数据": 后台框架, "数据协议": HTTP服务类.获取数据协议("html"), "模板数据": 模板数据 }); 返回;
验签 信息错误 直接发送 指定页面到前端就好了 干嘛要这么麻烦呢?
1710841512467945.zip
服务端运行后浏览器 http://127.0.0.1:8081/
点 登录 然后 清除Cookies并请求 此处无法 301跳转,只能手动刷新页面才能301跳转
GET可以使用这个办法,但是POST的无法这样做,谢谢您的回答
不能恶意举报,否则进行封号处理!
测试账号
A迅捷云安全 Time: 2024-03-19 18:18:14
评论ID
按照你的修改的. 你要的清除后直接返回登录页
快码FOF编程 Time: 2024-03-19 16:42:52
评论ID
这个是业务逻辑的问题,通过地址栏访问肯定是可以301跳转;如果不能可以提供一个简单的不能301跳转的访问案例
A迅捷云安全 Time: 2024-03-19 16:56:09
评论ID
验签 信息错误 直接发送 指定页面到前端就好了 干嘛要这么麻烦呢?
野生程序菌 Time: 2024-03-19 17:46:27
评论ID
服务端运行后浏览器 http://127.0.0.1:8081/
点 登录 然后 清除Cookies并请求 此处无法 301跳转,只能手动刷新页面才能301跳转
野生程序菌 回复 2楼 A迅捷云安全 Time: 2024-03-19 17:51:39
评论ID
GET可以使用这个办法,但是POST的无法这样做,谢谢您的回答