一个内网ip和端口与外网ip与端口的问题给我困扰了一两天的时间,惨痛记录下来

故事是这样的:

       公司需要实现一个单点登录,因为没用框架要求也不那么严格,就随便在网上找了篇教程:使用cookies实现单点登陆,加了一个验证系统。流程介绍:第一次登陆系统A——经过过滤器,过滤器逻辑:在客户端寻找协议约定好的cookies,没有——重定向跳转至验证系统的登录页面(跳转url加参数:系统A的url),输入用户名与密码——验证通过则取参数(系统A的url)重定向跳转回系统A,并在Response中添加cookies;(验证未通过继续输用户名密码)——此时重定向跳转回系统A又会经过过滤器,它再去寻找协议中约定好的cookies,此时找到了,然后拿着cookievalue去验证系统去验证是否有效(通过HttpClient)。

        坏就坏在这一步,他娘的你在客户端访问系统A,系统A给你重定向至验证系统,实际上还是客户端去向验证系统发送请求,url当然都得写对外的外网ip+外网端口+验证系统名。但因为系统A和验证系统是在同一台服务器上的,去验证cookievalue使用HttpClient这时再用外网ip+外网端口+验证系统名就找不到了呀,因为它两都在同一台服务器上,这时应该要改为对内的内网ip+内网端口+验证系统名了。为了更方便理解,劳资想了半天举个贴切的例子:
       假如有A,B两个人,A向B借手机:对A来说B的手机的位置是:B的手里,那这个位置对A来说是正常的,但接下来是B要用手机,此时你再用A所看到的位置:B的手里;这时就不好使了,因为B懵逼了他在想B是谁。。。此时对B来说手机的位置应该是:本人手里,嗯大概就是这么个意思,归纳为一句话就是“拿着手机找手机”,这个偶尔人也会犯得小错误,那人写的代码上也可能一时疏忽而忘了。

      就这么个玩意折腾了我一天多时间:在网上各种百度:有说是因为某个ip频繁访问某台服务器时,会被该服务器设置的临时屏蔽系统屏蔽掉,应设置代理服务器,有说是因为HttpClien创建连接时出现异常而一直无法真正关闭了导致的,就这样花费了大量的时间。解决了后想想内心是有点崩溃的,唉,记录下来,惨痛的教训!!!

你可能感兴趣的:(一个内网ip和端口与外网ip与端口的问题给我困扰了一两天的时间,惨痛记录下来)