java使用POST请求模拟登录openstack horizon问题请教

sowill sowill 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我目前写了一段HttpClient模仿浏览器发送POST请求来登录openstack horizon的代码,目的是自己写一个登录页面来替代掉horizon本身的登录页面来实现登录,POST请求/dashboard/auth/login/,参数和csrftoken均能取到,大概代码如下:

CloseableHttpClient client = HttpClientBuilder.create().build();
URI uri = null;

Kv kv = getCookiesStr();
System.out.println("kv is :"+kv.toString());

List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("username","admin"));
params.add(new BasicNameValuePair("password","123456"));
params.add(new BasicNameValuePair("region","http://10.0.11.211:5000/v3"));
params.add(new BasicNameValuePair("csrfmiddlewaretoken",kv.getStr("csrfmiddlewaretoken")));
params.add(new BasicNameValuePair("fake_email",""));
params.add(new BasicNameValuePair("fake_password",""));
params.add(new BasicNameValuePair("next","/dashboard/"));

uri = new URIBuilder().setScheme("http").setHost("10.0.11.71").setPort(80)
.setPath("/dashboard/auth/login/").setParameters(params).build();
HttpPost post = new HttpPost(uri);


String csrftoken = kv.getStr("csrftoken").split("=")[1];
post.setHeader("X-CSRFToken",csrftoken);
post.setHeader("Cookie",kv.getStr("csrftoken"));
post.setHeader("User-Agent","Mozilla/5.0 (X11; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0");
post.setHeader("Host","10.0.11.71");
post.setHeader("Origin","10.0.11.71");
post.setHeader("Pragma","10.0.11.71");
post.setHeader("Cache-Control","no-cache");
post.setHeader("Connection","keep-alive");
post.setHeader("Upgrade-Insecure-Requests","1");
post.setHeader("Content-Type","application/x-www-form-urlencoded");
post.setHeader("Referer","http://10.0.11.71/dashboard/auth/login/?next=/dashboard/");
post.setHeader("Accept-Encoding","gzip, deflate");
post.setHeader("Accept-Language","zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
post.setHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");

CloseableHttpResponse response = client.execute(post);
System.out.println("status+++:"+response.getStatusLine());
System.out.println("respone body+++:"+EntityUtils.toString(response.getEntity()));
System.out.println("respone header++:"+response.getAllHeaders());
for(Header header:response.getAllHeaders()){
System.out.println("header==>:"+header.getName()+":"+header.getValue());
}
System.out.println("status:++++++"+response.getStatusLine());


返回的response信息如下:
header==>:Date:Wed, 15 May 2019 06:38:16 GMT
header==>:Server:Apache/2.4.6 (CentOS) mod_wsgi/3.4 Python/2.7.5
header==>:Content-Language:zh-cn
header==>:Expires:Wed, 15 May 2019 06:38:16 GMT
header==>:Vary:Cookie,Accept-Language
header==>:Cache-Control:no-cache, no-store, must-revalidate, max-age=0
header==>:X-Frame-Options:SAMEORIGIN
header==>:Set-Cookie:csrftoken=XWAZdvRupuND5oemj1qNeB7HZoiKHUCgOjvvAJrDEvONMdA6yF9DbrxVbqIy6XLN; Path=/
header==>:Set-Cookie:login_region=; expires=Thu, 14-May-2020 06:38:16 GMT; Max-Age=31536000; Path=/
header==>:Set-Cookie:login_domain=; expires=Thu, 14-May-2020 06:38:16 GMT; Max-Age=31536000; Path=/
header==>:Content-Length:9736
header==>:Keep-Alive:timeout=5, max=100
header==>:Connection:Keep-Alive
header==>:Content-Type:text/html; charset=utf-8
status:++++++HTTP/1.1 200 OK

看response body是直接给我返回到horizon自己的登录界面了,而且返回的header里没有sessionid,login_region也是空的,和正常浏览器请求登录返回的状态码302也不同,而keystone和apache2的日志里也没有任何报错日志,不知道哪位大佬试过用post来模拟登录openstack的horizon,情不吝赐教帮助我一下!感谢!
...全文

相关推荐

硕士复现燃料电池供氢系统建模及控制策略Simulink仿真(附带说明PPT+参考文献+复现模型+实物源码)

内容概要:本资源聚焦于燃料电池供氢系统的建模与控制策略研究,通过Simulink仿真平台实现系统动态行为的精确模拟与控制算法的验证。内容涵盖供氢系统的关键部件建模,如氢气供应管路、压力调节阀、储氢罐及燃料电池堆等,并针对系统响应滞后、压力波动等问题,设计并实现了先进的控制策略,例如基于反馈与前馈的复合控制、PID控制或模型预测控制(MPC),以确保氢气供给的稳定性与效率。配套提供的说明PPT详细阐述了建模思路与控制逻辑,参考文献为研究提供了理论支撑,而完整的复现模型与实物源码则极大地方便了学习者进行仿真复现与二次开发。; 适合人群:具备一定自动化、电气工程或能源动力系统背景,正在进行相关课题研究的研究生,以及从事氢能系统开发的工程技术人员。; 使用场景及目标:① 学习并掌握燃料电池供氢系统的工作原理与关键组件的数学建模方法;② 利用Simulink搭建复杂能源系统的仿真模型,并设计、调试与验证先进控制策略;③ 基于提供的完整资源包(PPT、模型、源码)进行科研复现,作为学位论文或学术研究的技术基础。; 阅读建议:学习者应结合说明PPT的理论讲解,逐步操作复现模型,重点关注控制模块的设计逻辑与参数整定过程。建议在理解现有模型的基础上,尝试修改工况参数或优化控制算法,以深化对系统动态特性的认识,从而将本资源作为开展自主创新研究的有效跳板。

小念念_

风光火储多源协同参与电网一次调频与二次 AGC 调频控制策略研究(Simulink仿真实现)

内容概要:本文研究了风光火储多源协同参与电网一次调频与二次AGC调频的控制策略,并通过Simulink进行仿真实现。深入分析了风能、光伏、火电及储能系统在电网频率调节中的出力特性与动态响应机制,提出了一种综合协调控制策略,实现调频责任的合理分配与控制指令的有效分解。研究涵盖了多能源系统建模、频率偏差检测、调频功率分配逻辑、控制器参数设计及闭环仿真验证等关键环节,有效提升了高比例新能源接入背景下电力系统的频率稳定性与抗扰动能力。; 适合人群:具备电力系统、自动化或新能源相关背景,从事电网控制、能源调度、仿真建模等工作的科研人员与工程技术人员,尤其适合研究生及从事新能源并网与电力系统稳定研究的专业人员。; 使用场景及目标:①应用于高比例新能源接入电网的频率稳定控制研究;②为风光火储多能互补系统的协同控制策略设计提供仿真验证平台;③支持电力系统仿真教学与科研中的动态性能分析与控制算法开发。; 阅读建议:建议结合Simulink模型文件同步运行仿真,深入理解各模块控制逻辑;重点关注多源调频的协调机制与参数整定方法,可进一步扩展至含储能优化配置或考虑通信延迟的场景研究。

三伯

毕业设计含文档和代码VB+ACCESS汽车租凭管理系统(论文+系统)

毕业设计含文档和代码VB+ACCESS汽车租凭管理系统(论文+系统)

zz_ll9023one

poppler-26.09.0

Poppler 是开源 PDF 渲染 / 解析库(基于 Xpdf 3.0),poppler-26.09.0 是它 2026-09-03 发布的正式版本

weixin_40719186

LangGraph图版本控制:迁移与兼容性处理

内容概要:讲解随着需求变化,LangGraph图结构如何演进。展示状态字段增删改、节点重命名、边调整时的兼容策略。通过版本号字段和迁移函数示例,说明如何处理旧检查点数据。讨论灰度发布和A/B测试中的多图版本并存方案。 sjbzhibo.hqjxgs.com hntxmedia.com www.honglu-cy.com seriea-live-streaming.hnxskj.com cbalive.htne.com.cn

2601_96960449
评论 3
收藏 已收藏
分享
返回顶部
sowill
Web 开发 81,108 成员 341,721 内容