如何模拟登录后可以带权限访问远程服务器?

xuhesheng 2020-09-19 12:36:47
我的需求是
在我的WEB项目中,点个按钮或者链接.
在新开的窗口中,模拟目标网站的登录过程,并访问目标网站的首页地址.

因为目标网站的首页地址肯定是需要鉴权的.

我现在使用的方案是
新打开的页面中,使用$.post方法提交目标网站的登录地址,成功之后,window.location=目标网站首页地址
该方案的前提是目标网站允许跨域访问.
但是最终访问首页地址却因为没有权限而自动跳转到登录了.

请问各位是否有改进该方案的地方.
为什么post访问登录地址之后,再访问首页地址的时候,并没有变成对该目标网站的同一次访问?

或者各位还有其他可行的方案.
...全文
11489 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuhesheng 2020-09-27
  • 打赏
  • 举报
回复
引用 12 楼 RockeyCui 的回复:
弄这些没有什么用吧,就算通过小技巧弄成了,别人的网站稍微一改你这就崩溃了。 楼主可以看看 oauth2.0 协议,目的和你差不多,但是需要每个网站都配合使用这种协议的。
1.0和2.0我这边都用过, 但是不见得别人的网站也用. 你这种鉴权方式也是要求别人的网站大改啊 对方是第三方不是乙方,你也不是甲方,人家不可能配合你做你想要的修改. 我们的这种不值一提的小技巧虽然要经过JS跨域的阻拦 但是只要对方允许跨域,我们还是有办法hack一下的.
鸣鸣Amadues 2020-09-24
  • 打赏
  • 举报
回复
引用 8 楼 maradona1984 的回复:
[quote=引用 7 楼 鸣鸣Amadues 的回复:][quote=引用 5 楼 maradona1984 的回复:]
引用
我现在使用的方案是 新打开的页面中,使用$.post方法提交目标网站的登录地址,成功之后,window.location=目标网站首页地址 该方案的前提是目标网站允许跨域访问. 但是最终访问首页地址却因为没有权限而自动跳转到登录了.
这是你的方案,如果允许跨域的话那没有任何问题,但我从你的描述中貌似也没看出不允许跨域的描述,但感觉还是存在跨域的问题. 浏览器的安全机制应该不可能让你在对方不配合的情况下可以完成你想要的功能的.
chrome浏览器可以把跨域关掉的[/quote] 别告诉俺你们的应用都要求用户把跨域关掉...这种要求比用户清缓存更过分哈[/quote] 让客户都关跨域不现实,我的意思是只是默认不可以跨域
RockeyCui 2020-09-24
  • 打赏
  • 举报
回复
弄这些没有什么用吧,就算通过小技巧弄成了,别人的网站稍微一改你这就崩溃了。
楼主可以看看 oauth2.0 协议,目的和你差不多,但是需要每个网站都配合使用这种协议的。
xuhesheng 2020-09-24
  • 打赏
  • 举报
回复
引用 9 楼 鸣鸣Amadues 的回复:
让客户都关跨域不现实,我的意思是只是默认不可以跨域
让用户修改浏览器的这些不痛不痒的配置并不可取. 而且也基本上不能是登陆我的网站,自动去修改浏览器配置.这样你的操作会被浏览器直接拦截的.甚至直接被windows防火墙拉黑的.
xuhesheng 2020-09-24
  • 打赏
  • 举报
回复
引用 5 楼 maradona1984 的回复:
这是你的方案,如果允许跨域的话那没有任何问题,但我从你的描述中貌似也没看出不允许跨域的描述,但感觉还是存在跨域的问题. 浏览器的安全机制应该不可能让你在对方不配合的情况下可以完成你想要的功能的.
我这个方案是想在不用对方服务器的配合的前提下展开的. 不过似乎不太可能.要不然,我一个iframe里src=www.baidu.com.这个一个典型的木马啊 但是如果用jsonp,对方需要支持option的访问方式.这个可能一般的网站都不太会去做的.除非是哪边就是纯粹的接口.而别人又要像我这样非要ajax访问. 我出现这个问题的核心原因是,客户的需求里要求,用户在网页上点击个什么按钮,可以自动登录到别人那去. 而我给的方案是利用页面的ajax去先提交,成功了就跳转,这样就能够做到会话保持了. 如果有其他的方案也可以啊.例如如何能够编程接口上直接处理而不是网页上操作.
maradona1984 2020-09-22
  • 打赏
  • 举报
回复
引用 7 楼 鸣鸣Amadues 的回复:
[quote=引用 5 楼 maradona1984 的回复:]
引用
我现在使用的方案是 新打开的页面中,使用$.post方法提交目标网站的登录地址,成功之后,window.location=目标网站首页地址 该方案的前提是目标网站允许跨域访问. 但是最终访问首页地址却因为没有权限而自动跳转到登录了.
这是你的方案,如果允许跨域的话那没有任何问题,但我从你的描述中貌似也没看出不允许跨域的描述,但感觉还是存在跨域的问题. 浏览器的安全机制应该不可能让你在对方不配合的情况下可以完成你想要的功能的.
chrome浏览器可以把跨域关掉的[/quote] 别告诉俺你们的应用都要求用户把跨域关掉...这种要求比用户清缓存更过分哈
xuhesheng 2020-09-21
  • 打赏
  • 举报
回复
这种不必担心. 本身这个前提就是模拟登录,所以,只要我完成登录了.实际上,同一个request去访问的时候.例如跳转过去,实际上就是已经登录状态了.你可以理解为,第一个登录操作执行的时候,对方session里记录了访问信息.你再次同request访问的时候,对方自然就认为你是同一次访问了.
鸣鸣Amadues 2020-09-21
  • 打赏
  • 举报
回复
引用 5 楼 maradona1984 的回复:
引用
我现在使用的方案是 新打开的页面中,使用$.post方法提交目标网站的登录地址,成功之后,window.location=目标网站首页地址 该方案的前提是目标网站允许跨域访问. 但是最终访问首页地址却因为没有权限而自动跳转到登录了.
这是你的方案,如果允许跨域的话那没有任何问题,但我从你的描述中貌似也没看出不允许跨域的描述,但感觉还是存在跨域的问题. 浏览器的安全机制应该不可能让你在对方不配合的情况下可以完成你想要的功能的.
chrome浏览器可以把跨域关掉的
鸣鸣Amadues 2020-09-21
  • 打赏
  • 举报
回复
看你目标地址需要什么数据,返回什么数据。 如果你登录成功,但是再次访问失败,基本上是你没有正确拿到登录返回的数据,或者是拿到了返回了数据但是再访问时没有正确提供这个数据。
maradona1984 2020-09-21
  • 打赏
  • 举报
回复
引用
我现在使用的方案是 新打开的页面中,使用$.post方法提交目标网站的登录地址,成功之后,window.location=目标网站首页地址 该方案的前提是目标网站允许跨域访问. 但是最终访问首页地址却因为没有权限而自动跳转到登录了.
这是你的方案,如果允许跨域的话那没有任何问题,但我从你的描述中貌似也没看出不允许跨域的描述,但感觉还是存在跨域的问题. 浏览器的安全机制应该不可能让你在对方不配合的情况下可以完成你想要的功能的.
xuhesheng 2020-09-21
  • 打赏
  • 举报
回复
引用 3 楼 tianfang 的回复:
独立软件、app?还是浏览器中运行? selenium, 可以用python java控制浏览器的行为
请兄弟看清楚,我说的是WEB项目.也就是你说的浏览器. 我的要求是在页面上完成以上操作. selenium,有浏览器插件可用么?推荐个通用的.
tianfang 2020-09-21
  • 打赏
  • 举报
回复
独立软件、app?还是浏览器中运行? selenium, 可以用python java控制浏览器的行为
qybao 2020-09-19
  • 打赏
  • 举报
回复
那你要知道你登录后的信息前后台是怎么管理的?比如后台返回一个token,让你前台每次请求都带上,但你跳转到首页地址时没有带上token,那自然就被拒了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧