当前博客:HTTP服务类通过接口请问的无法通过301跳转怎么办?

102 次浏览【转载需注明来源】

博客作者:【野生程序菌】

个性签名:寒窗苦读十年一朝凤舞九天

以下所述的是一个验签的程序逻辑。场景是用户还在登录后的页面,COOKIES到期后或失效后就经过301跳转登录页

前端是内联框架,通过接口向服务端POST请求的,无法通过访问信息["主动301跳转"]跳转。

只有手动刷新网页才会进行301跳转,但是前端打开新的栏目不会进行301跳转(按理这个也是相当于刷新网页了)!

主要想解决:

1、通过接口请求能301跳转

2、通过切换栏目能301跳转

第1条难办,就实现第2条也可以。

默认排序
Generic placeholder image
Generic placeholder image
已采纳
A迅捷云安全 Time: 2024-03-19 18:18:14

1710843490850636.rar

按照你的修改的.  你要的清除后直接返回登录页 

Generic placeholder image
快码FOF编程 Time: 2024-03-19 16:42:52

这个是业务逻辑的问题,通过地址栏访问肯定是可以301跳转;如果不能可以提供一个简单的不能301跳转的访问案例

Generic placeholder image
A迅捷云安全 Time: 2024-03-19 16:56:09
 局部变量 模板数据 = {};
    局部变量 返回消息, 后台框架, 时间, 地址, 浏览器, 系统, 执行信息;
    如果 (访问信息["参数信息"]["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"), "模板数据": 模板数据 });
    返回;

验签  信息错误 直接发送 指定页面到前端就好了 干嘛要这么麻烦呢?

 

Generic placeholder image
野生程序菌 Time: 2024-03-19 17:46:27

1710841512467945.zip

服务端运行后浏览器 http://127.0.0.1:8081/

点 登录 然后 清除Cookies并请求 此处无法 301跳转,只能手动刷新页面才能301跳转

 

Generic placeholder image
野生程序菌 回复 2楼 A迅捷云安全 Time: 2024-03-19 17:51:39

GET可以使用这个办法,但是POST的无法这样做,谢谢您的回答


HTTP服务类通过接口请问的无法通过301跳转怎么办?