关于网络连接问题前期一直失败的原因
2015-01-10 17:50
423 查看
最开始一直失败是因为在login发送post指令时没有加入任何有关访问权限的代码,在研究过学长的OC代码之后,
发现他在init的时候获取了服务器cookie,并从cookie中提取出来csrftoken,并在login的时候加到访问的头部,作为
权限的标记。我经过尝试之后终于获取到了cookie,并将csrftoken加入httpURLConnection的头部,结果还是返回
403,我们在这里出现了好长时间的卡顿。
之后经过学姐的帮忙,终于明白了csrftoken并不是唯一的权限标识,而是需要将init得到的全部cookie加入到login
访问服务器的httpClient的头部,才能完成访问。二者的区别通俗点来讲相当于两个人访问一个服务器,两个人分别用A
和B表示,A负责init,B负责login。第一种方法好比A先初始化得到了访问权限的cookie,之后将得到的token交给B,
然后B拿着从A获得的token去访问,故服务器识别为权限不够。而第二种方法则相当于,A先初始化得到了访问权限的
cookie,然后将所得到的全部cookie包括token全部交给B,此时B相当于是A的复制,也就是相当于A再次去访问服务
器,故此时服务认为B拥有访问权限。(PS:本来以为httpUrlConnection与httpClient发送数据的格式不同,故开始
是用httpUrlConnection发送post指令,后来发现二者执行效果是等价的,故之后换用httpClient实现post请求)。
发现他在init的时候获取了服务器cookie,并从cookie中提取出来csrftoken,并在login的时候加到访问的头部,作为
权限的标记。我经过尝试之后终于获取到了cookie,并将csrftoken加入httpURLConnection的头部,结果还是返回
403,我们在这里出现了好长时间的卡顿。
之后经过学姐的帮忙,终于明白了csrftoken并不是唯一的权限标识,而是需要将init得到的全部cookie加入到login
访问服务器的httpClient的头部,才能完成访问。二者的区别通俗点来讲相当于两个人访问一个服务器,两个人分别用A
和B表示,A负责init,B负责login。第一种方法好比A先初始化得到了访问权限的cookie,之后将得到的token交给B,
然后B拿着从A获得的token去访问,故服务器识别为权限不够。而第二种方法则相当于,A先初始化得到了访问权限的
cookie,然后将所得到的全部cookie包括token全部交给B,此时B相当于是A的复制,也就是相当于A再次去访问服务
器,故此时服务认为B拥有访问权限。(PS:本来以为httpUrlConnection与httpClient发送数据的格式不同,故开始
是用httpUrlConnection发送post指令,后来发现二者执行效果是等价的,故之后换用httpClient实现post请求)。
相关文章推荐
- 关于映射网络驱动 网络存在问题不能连接的原因
- android中网络连接一直失败的原因之一
- 关于ubuntu“下载软件仓库信息失败 检查您的网络连接“问题的解决办法
- 关于前阵子数据库链接经常性连接失败的原因
- 关于“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决
- YAWL引擎运行失败出现关于log4j问题的原因和解决方法
- 关于流量升高导致TIME_WAIT增加,MySQL连接大量失败的问题
- 关于网络连接转换问题的解答【xinfanqie】
- 问题一:用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
- 关于模拟器Hyper-v中的Wp8网络连接问题
- 关于Hibernate3,mysql5 数据库连接超过8小时 连接超时的问题及解决方案(部分摘自网络)
- 关于windows下网络连接禁用后启用才能上网的问题
- 一个关于组播的网络问题--暂没有时间确定真实原因
- 关于安装.NET Framework 2.0时偶然碰到的问题(提示"Error 205015. 安装程序集..../System.EnterpriseServices.dll失败,原因是出现了系统错误:拒绝访问。")
- 关于USB(Activesync)连接对话框一直跳出来的问题
- sql server 2005 网络连接失败的问题
- 关于“telnet localhost:1433 不能打开到主机的连接, 在端口 23: 连接失败”问题
- 关于SQL的若干问题:备份,更改SA用户密码,添加用户,连接失败,服务不能开启等
- 求救一个关于commons-httpclient组件在网络连接过程中的速度问题,好奇怪啊。。。