Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iOS中相同IP,不同端口,session失效的问题

iOS中相同IP,不同端口,session失效的问题

作者头像
freesan44
发布于 2018-09-05 07:52:52
发布于 2018-09-05 07:52:52
2.1K00
代码可运行
举报
文章被收录于专栏:freesan44freesan44
运行总次数:0
代码可运行

背景

公司在https服务器(端口443)进行正常登陆业务等处理 https://ip1:443/ 然后在端口444服务器进行资料文件上传等处理 https://ip1:444/ 因为服务器在https://ip1:443/登陆成功之后对cookie中的session进行校验保存,而一旦出现访问443->444->443,就是进行文件上传操作后,再调用443端口后,服务器对session校验失败,出现会话超时问题

原因

因为session状态是靠cookie中存储的jsessionid实现的,所以,由于两个服务器的sessionid,名称、域、路径都一样,导致sessionid被覆盖,从而导致session失效;由此也得出cookie是不区分端口的。

cookie不区分端口号 cookie区分域、路径、名称

处理办法

在访问另一个端口前,把cookie缓存到本地,然后在返回443端口后,再把cookie重新写入

导出cookie并缓存:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//导出cookie
    NSHTTPCookieStorage* nCookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    NSArray* nCookies = [nCookies cookiesForURL:[NSURL URLWithString:urlStr]].copy;
for(NSHTTPCookie*cookie in nCookies)
    {
        if([cookie isKindOfClass:[NSHTTPCookie class]])
        {
            if([cookie.name isEqualToString:@"JSESSIONID"])
            {
                NSNumber*sessionOnly =[NSNumber numberWithBool:cookie.sessionOnly];
                NSNumber*isSecure = [NSNumber numberWithBool:cookie.isSecure];
                NSArray*cookies = [NSArray arrayWithObjects:cookie.name, cookie.value, sessionOnly, cookie.domain, cookie.path, isSecure,nil];
                [[NSUserDefaults standardUserDefaults]setObject:cookies forKey:@"cookies"];
                
                break;
            }
        }
    }

读取cookie并写入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-(void)loadCookies
{
    NSArray*cookies =[[NSUserDefaults standardUserDefaults]objectForKey:@"cookies"];
    
    if(cookies.count>0)
    {
        NSMutableDictionary*cookieProperties = [NSMutableDictionary dictionary];
        [cookieProperties setObject:[cookies objectAtIndex:0]forKey:NSHTTPCookieName];
        
        [cookieProperties setObject:[cookies objectAtIndex:1]forKey:NSHTTPCookieValue];
        
        [cookieProperties setObject:[cookies objectAtIndex:3]forKey:NSHTTPCookieDomain];
        
        [cookieProperties setObject:[cookies objectAtIndex:4]forKey:NSHTTPCookiePath];
        
        NSHTTPCookie*cookieuser = [NSHTTPCookie cookieWithProperties:cookieProperties];
        
        [[NSHTTPCookieStorage sharedHTTPCookieStorage]setCookie:cookieuser];
        
    }
}

PS:AFNetworking也能用相同处理办法

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.07.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AFNetworking简单封装(Block形式)
前言 之前写了 AFNetworking 的基本用法 这次就简单的封装一下 封装 ZJAFNetworkingKit.h #import <Foundation/Foundation.h> #import "AFNetworking/AFNetworking.h" typedef void(^ZJAFNetworkingBlock)(bool success,id responseObject,NSError * error); @interface ZJAFNetworkingKit : NSObjec
码客说
2019/10/22
1.3K0
iOS 轻量级存储
NSUserDefaults简介 在Android和ios都提供了本地轻量级数据存储,底层实现都是基于key-value的方式。Android里面的叫SharedPreferences,ios的叫NSUserDefaults,使用上也是非常的简单。我们先看一看NSUserDefaults的API。 #import <Foundation/NSObject.h> @class NSArray<ObjectType>, NSData, NSDictionary<KeyValue, ObjectValue>,
xiangzhihong
2018/01/26
1.2K0
AFNetworking3的常用操作
导入的最新版的AFNetworking3.1.0,突然发现找不到AFHTTPRequestOperationManager了。 刚开始以为是cocoapods没有给我导进去,后来发现也没有这NSURLConnection了,被弃用了,突然意识到,这个就是AFHTTPRequestOperationManager找不到的原因了,它是基于NSURLConnection封装的!! 于是找了一下,现在都用的是NSURLSession了,AFNetworking中用的是AFHTTPSessionManager了
码客说
2019/10/22
6680
Objective-C中的集合类
       下面详细的介绍Objective-C中的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来问题不大,可以类比Java中的集合类去学习。 在Objective-C中的集合类中主要包括不可变的数组--NSArray,  可变的数组--NSMutableArray,   不可变的字典--NSDictionary,    可变的字典--NSMutableDictionary, 不可变的集合--NSSet,可变的集合--NSMutableSet。
lizelu
2018/01/11
1.2K0
iOS常用的数据存储方式
针对应用的字体大小、是否保存用户名等偏好设置,IOS的每个应用都有个NSUserDefaults实例,通过它来存取偏好设置。NSUserDefaults设置数据的时候,不是立即写入,而是根据时间戳定时地把缓存中的数据写入本地磁盘。所以调用了set方法之后数据有可能还没有写入磁盘应用程序就终止了。
公众号iOS逆向
2021/07/05
2K0
iOS常用的数据存储方式
iOS网络编程之七——本地用户凭证Cookie的应用
    Cookie是网站为了便是终端身份,保存在终端本地的用户凭证信息。Cookie中的字段与意义由服务端进行定义。例如,当用户在某个网站进行了登录操作后,服务端会将Cookie信息返回给终端,终端会将这些信息进行保存,在下一次再次访问这个网站时,终端会将保存的Cookie信息一并发送到服务端,服务端根据Cookie信息是否有效来判断此用户是否可以自动登录。
珲少
2018/08/16
1.1K0
iOS的WebView——WKWebView
前言 在iOS8中,苹果推出了WKWebView。WKWebView有一个突出特点,就是内存占用少。 但作为一个全新的WebView,API相比于之前的UIWebView肯定会有所不同。今天就在这里记录一下WKWebView的基本使用。 Webview的使用,通常包含以下几个部分:浏览器的基本设置,浏览器的各种回调,浏览器中js如何调用原生方法。 WKWebView基本使用 self.webview = [[WKWebView alloc]init]; [self.view addSubvi
Oceanlong
2018/07/03
3.7K0
清除WKWebView cookies
在UIWebView下,可以使用 [[NSURLCache sharedURLCache] removeAllCachedResponses];//清除缓存 WKWebView清除cookies的方法(iOS9以上) WKWebsiteDataStore *dateStore = [WKWebsiteDataStore defaultDataStore]; [dateStore fetchDataRecordsOfTypes:[WKWebsiteDataStore allWebsiteData
czjwarrior
2018/05/28
3.4K0
javaWeb核心技术第八篇之Cookie和Session
会话技术: 会话是什么? 浏览器和服务器交互,浏览器打开网页访问服务器,会话开始,正常交互. 浏览器关闭,会话结束. 会话能干什么? 会话可以共享数据. Cook
海仔
2019/08/26
8110
浅谈iOS中的WKWebView添加cookie
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53942862
用户1451823
2018/09/13
2.3K0
Cookie 和 Session 机制原理分析 & 区别对比
Web application servers are generally "stateless":
一个会写诗的程序员
2018/09/12
1.2K0
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB是一门非常简单的课程内容,我们大概用三章的内容来包含所有的知识点,三章分为
红目香薰
2023/03/07
6560
ASP.NET WEB——项目中Cookie与Session的用法
tomcat源码解读六 tomcat中的session生命历程
     session的作用是在一次会话中(从打开浏览器到关闭浏览器同当前服务器的交流)当客户端第一次请求session对象时候,服务器会为客户端创建一个session,并将通过特殊算法算出一个se
cfs
2018/03/08
1.5K0
tomcat源码解读六  tomcat中的session生命历程
Tomcat之Session管理
先了解Session,Cookie,JSESSIONID JSESSIONID是一个唯一标识号,用来标识服务器端的Session,也用来标识客户端的Cookie,客户端和服务器端通过这个JSESSIONID来一一对应。这里需要说明的是Cookie已经包含JSESSIONID了,可以理解为JSESSIONID是Cookie里的一个属性。让我假设一次客户端连接来说明我对个这三个概念的理解 HTTP连接本身是无状态的,即前一次发起的连接跟后一次没有任何关系,是两次独立的连接请求 但是互联网访问基本上都是需要有
JavaEdge
2018/05/16
1.2K0
初学Java Web(5)——cookie-session学习
HTTP 协议 Web 浏览器与 Web 服务器之间的一问一答的交互过程必须遵守一定的规则,这样的规则就是 HTTP 协议。 HTTP 是 hypertext transfer protocol(超文本传输协议)的简写,它是 TCP/IP 协议之上的一个应用层的协议,用于定义 Web 浏览器与 Web 服务器之间交互数据的过程以及数据本身的格式。 特点:无状态,默认端口 80 HTTP 协议到底约束了什么? 约束了浏览器以何种格式向服务端发送数据 约束了服务器应该以何种格式来接收客户端发送的数据 约
我没有三颗心脏
2018/04/26
7090
初学Java Web(5)——cookie-session学习
Session、Cookie、Token 【浅谈三者之间的那点事】
HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。
IT茂茂
2020/09/24
22.2K1
Session、Cookie、Token 【浅谈三者之间的那点事】
iOS你不知道的事--Crash分析
原文地址:https://www.jianshu.com/p/56f96167a6e9
iOSSir
2019/06/01
1.5K0
基于Redis缓存的Session共享(附源码)
    在上一篇文章中我们研究了Redis的安装及一些基本的缓存操作,今天我们就利用Redis缓存实现一个Session共享,基于.NET平台的Seesion共享用的最多的应该是SQLServer数据库实现,我之前参与的一个项目么么亲子社区就是用的SQLSERVER实现不同子域名之间的Session共享。先打个广告嘿嘿,么么亲子网:enmuo.com,i.enmuo.com就是通过SQLSERVER实现Session共享 欢迎大家访问。
写代码的猿
2019/04/11
1K0
基于Redis缓存的Session共享(附源码)
java中session的用法与原理
https://www.cnblogs.com/xdp-gacl/p/3855702.html
全栈程序员站长
2022/09/14
9040
iOS网络请求之上传图片:从示例到源码解析 -- 以上传Face++SDK回调的图片为例(HYNetworking,AFNetworking,XMNetworking)
本文一开始上传图片以调用HYNetworking的API为例,这个网络框架是以AFNetworking为基础进行的封装。HYNetworking内部实现上传图片的时候,其实就是采用AFNetworking关于上传图片的API,都是AFNetworking里面一个API。后面再讲XMNetworking上传图片请求的操作方法,它也是基于AFNetworking上传进行的封装,不过比HYNetworking更加隐晦而已。
陈满iOS
2018/09/10
2.2K0
iOS网络请求之上传图片:从示例到源码解析 -- 以上传Face++SDK回调的图片为例(HYNetworking,AFNetworking,XMNetworking)
相关推荐
AFNetworking简单封装(Block形式)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验