cookie和session以及iOS cookie的查取

2023-11-20 20:50
文章标签 ios session cookie 查取

本文主要是介绍cookie和session以及iOS cookie的查取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Cookie的工作原理

http是无状态的,这是什么意思呢?就是说,在没有cookie之前,你第一次访问这个页面和第二次访问这个页面,

服务器是不知道的,不知道前一次是你。那么问题来了,我怎么登录,登录成功后,刷新下,服务器就不认识我了,

不展示我的信息了,这怎么能行,于是cookie就产生了,cookie是存在客户端的,最常见的就是浏览器了,

你第一次访问页面的时候,服务器会返回个cookie给你,这个cookie其实就是sessionId,并存于客户端,

第二次的时候,你刷新页面的时候,浏览器就会带上之前的cookie,cookie就像通行证,每人一个,

无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了,这就是Cookie的工作原理。

cookie可以设置有效期的,最常见的大家经常看到网站上的记住我功能,它就是利用cookie的有效期,

可以让用户一段时间内免登录,cookie还可以存储一些其它的信息,比如像早期有的购物网站,

用户购物车这个东西,这个购物车因为用户可能会一会添加一会删除,如果存在数据库里的话,

因为频繁的操作,会对数据库造成一定的压力,毕竟用户可能到最后啥也没买,我的数据库服务器却收到了一万点暴击,

于是cookie的作用就来了,购物车信息存在cookie里,这样服务器就没有来自购物车的压力了,

平摊到了千千万万的用户浏览器上了,是不是很绝妙。

session是干嘛的

既然cookie可以存数据,那么直接存用户的信息不好吗?干嘛还要session。这就涉及到网络安全的问题了,

cookie存在客户端,假如把你的银行卡信息存在cookie里,这时你去上个厕所,其他同事去翻了你的cookie,

不是被盗了吗,是不是很危险。于是就有了session。

session才是存用户的一些隐私信息的,session是存在服务器端的,非法用户一般是无法盗取的,很安全。

一般登录用户请求页面的时候,浏览器会带上服务器颁发的凭证cookie,凭着这个凭证,

找到服务器里存着对应的session数据,一判断session里有用户信息,于是根据用户信息返回相关数据。

登录功能就是这样实现的。

如果一个网站有千万的用户,千万的用户同时在线,那么服务器就要维护千万份的session,压力山大,

所以可以考虑把session持久化到redis或者memcached中,减轻web服务器的压力,提高web的响应速度。

iOS cookie的查取

当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,

会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的Cookie继续去请求。
同样适用于ASIHTTPRequest,AFNetworking, Webview等,Cookie常用于一些基于认证的网络请求

NSHTTPCookieStorage

NSHTTPCookieStorage 实现了一个管理cookie的单例对象(只有一个实例),每个Cookie都是NSHTTPCookie类的实例,

另外Cookie在所有应用之间共享并在不同进程之间保持同步。Session Cookie(一个isSessionOnly方法返回YES的Cookie)只能在单一进程中使用。

cookie

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器或者客户端),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,

下次请求同一网站地址时就发送该Cookie给服务器

HTTP header

HTTP header中包含HTTP请求与响应的操作参数. header属性定义了所传输数据的各种特性. header属性以属性名开始,

以冒号结尾,最后是属性值.属性名及值会因应用的不同

查看cookie

在请求网络后执行下面代码,就可以看到cookie了。

    NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];NSArray *cookieArr = [cookieJar cookies];for(NSHTTPCookie *cookie in cookieArr) {NSLog(@"cookie -> %@", cookie);if ([cookie.name isEqualToString:@"_xxx_session"]) {}}

 

举例如下:

<__NSArrayM 0x280347a20>(<NSHTTPCookieversion:0name:_xxx_sessionvalue:dENxcHNNY21TV2hCQzR6Q0hCTDE0bjlvaVQ4bFFGK3Zqak5JcDFUQUFCU3N0ZW42ejRNcnVMTFF2WHc5K1RyQVRWNENXdmxIV1RyMkhNV0ZzRFo4OHQwUDNXZTU5c1pRNWNxNjBDZEZOWjk5MUFaY2JvNTVVeUlkM3VUSHVvUURXWG9ZbE81STNQSjV5UzBFN1Z6L3V0K0VYYU5FMFJMRlVLT3BpbTdIZ2xJPS0tMW12S05naDF2NGdzWHVFL3Z0dXNUQT09--4b532f9179c51677ec5d2772077e268752373ce5expiresDate:'(null)'created:'2019-06-19 06:23:01 +0000'sessionOnly:TRUEdomain:xxx.xxx.compartition:nonesameSite:nonepath:/isSecure:FALSEisHTTPOnly: YESpath:"/" isSecure:FALSE isHTTPOnly: YES>)

NSHTTPCookieStorage实现cookie管理

网络框架AFNetworking  没有对Cookie 做过处理。

 可以使用NSHTTPCookieStorage实现cookie管理

1.存cookie

【NSHTTPCookieStorage sharedHTTPCookieStorage 】cookiesforURL:

2.设置cookie

【NSHTTPCookieStorage sharedHTTPCookieStorage 】setCookie:

3.清理

【NSHTTPCookieStorage sharedHTTPCookieStorage 】 deleteCookie:

token算是session的另一种说明吧

http:短连接使用token 机制来验证用户安全性

 token 值: 登录令牌! 用来判断当前用户的登录状态!

 token 值特点: 是一个字符串/大整数,只需要保证唯一性.是服务器根据用户的信息(账号/密码/身份认证机制(电话号/身份证号/支付宝账号/银行卡信息)...)来生成的用于标识用户身份的值! 上面的

value:dENxcHNNY21TV2hCQzR6Q0hCTDE0bjlvaVQ4bFFGK3Zqak5JcDFUQUFCU3N0ZW42ejRNcnVMTFF2WHc5K1RyQVRWNENXdmxIV1RyMkhNV0ZzRFo4OHQwUDNXZTU5c1pRNWNxNjBDZEZOWjk5MUFaY2JvNTVVeUlkM3VUSHVvUURXWG9ZbE81STNQSjV5UzBFN1Z6L3V0K0VYYU5FMFJMRlVLT3BpbTdIZ2xJPS0tMW12S05naDF2NGdzWHVFL3Z0dXNUQT09--4b532f9179c51677ec5d2772077e268752373ce5

 就是喽。

token 值获取:

// 当用户首次登录成功之后, 服务器端就会生成一个 token 值.

1.会在服务器保存token值(保存在数据库中)

2.将这个token值返回给客户端.

// 客户端拿到 token 值之后,一般保存在两个位置 :

1. 将 token 保存在 cookie 中;

2.将 token 保存在沙盒中,作为一个公共参数传递.

公共参数: 每一个网络请求都需要的参数! 一般公共参数有很多都是"可选"参数!,公共参数附带的越多,越利于后台监测用户,数据挖掘会使用到监测到的数据.

以后客户端再次发送网络请求(一般不是登录请求)的时候,就会将这个 token 值附带到参数中发送给服务器.

服务器接收到客户端的请求之后,会取出token值与保存在本地(数据库)中的token值做对比!

如果两个 token 值相同 :说明用户登录成功过!当前用户处于登录状态!

如果没有这个 token 值, 没有登录成功.

如果 token 值不同: 说明原来的登录信息已经失效,让用户重新登录.

 相关链接:https://www.cnblogs.com/W-Kr/p/5478702.html

 

转载于:https://www.cnblogs.com/ljcgood66/p/11051473.html

这篇关于cookie和session以及iOS cookie的查取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/397357

相关文章

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

JavaScript中document.cookie

“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对 Cookies 的很全面的访问权利。       每个 Cookie 都是这样的:<cookie名>=<值>   <cookie名>的限制与 javasc

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

iOS剪贴板同步到Windows剪贴板(无需安装软件的方案)

摘要 剪贴板同步能够提高很多的效率,免去复制、发送、复制、粘贴的步骤,只需要在手机上复制,就可以直接在电脑上 ctrl+v 粘贴,这方面在 Apple 设备中是做的非常好的,Apple 设备之间的剪贴板同步功能(Universal Clipboard)确实非常方便,它可以在 iPhone、iPad 和 Mac 之间无缝传输剪贴板内容,从而大大提高工作效率。 但是,iPhone 如何和 Wind

flask-login 生成 cookie,session

flask-login 生成 cookie,session Flask-Login login_user() 显示来自 Set-Cookie 标头的加密 cookie # 模拟一个用户类class User(UserMixin):def __init__(self, id):self.id = id@app.route('/login')def login():# 模拟用户登录过程user

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity

我的第一次份实习工作-iOS实习生-第三个月

第三个月 这个月有一个考核项目,是一个电子书阅读器,组长说很重要,是我的实习考核项目。 我的项目XTReader,这是我参考网上的一些代码,和模仿咪咕阅读做的,功能还不完善,数据的部分是用聚合数据做的。要收费的。   还有阅读页面,基本功能实现了一下。使用了autolayout,自适应布局,也是第一次用网络,第一次用数据库,第一次用自动布局。还有很多不足。 做了一周多,有个问题一直没

我的第一次份实习工作-iOS实习生-公司使用过的软件

bittorrentsync 素材,文件同步软件 cornerstone svn 软件开发合作 mark man 测量坐标的软件 SQLLite Manager 数据库操作软件