Jadual Kandungan
Session
Rumah hujung hadapan web tutorial js Cookie和Session的区别总结

Cookie和Session的区别总结

Apr 11, 2019 am 11:14 AM
javascript cache

本篇文章给大家带来的内容是关于Cookie和Session的区别总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

HTTP无状态协议

HTTP无状态协议,是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
简介
客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是SessionHTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了

Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从: [系统盘]:Documents and Settings[用户名]Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。斜体文字

发展
有了Cookie这样的技术实现,服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。通常,我们可以从很多网站的登录界面中看到“请记住我”这样的选项,如果你勾选了它之后再登录,那么在下一次访问该网站的时候就不需要进行重复而繁琐的登录动作了,而这个功能就是通过Cookie实现的。

与Cookie相对的一个解决方案是Session,它是通过服务器来保持状态的。由于Session这个词汇包含的语义很多,因此需要在这里明确一下 Session的含义。首先,我们通常都会把Session翻译成会话因此我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Session。从这个语义出发,我们会提到Session持续的时间,会提到在Session过程中进行了什么操作等等;其次,Session指的是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态。从这个语义出发,我们则会提到往Session中存放什么内容,如何根据键值从 Session中获取匹配的内容等。
要使用Session,第一步当然是创建Session了。那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。正是这样一个过程,用户的状态也就得以保持了。
综上所述,HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了

Cookie

存放位置
cookie数据存放在客户的浏览器上,服务器能够知道其中的信息;
使用方式
如果在浏览器中不设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。

如果在浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失

存储
单个cookie保存的数据不能超过4KB,一个服务器最多在客户端浏览器上保存20个Cookie,一个浏览器最多保存300个Cookie
cookie只能保存字符串类型,以文本的方式
应用场景
cookie技术有4个组件:在HTTP响应报文中有一个cookie首部行;在HTTP请求报文中有一个cookie首部行;在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理;位于Web站点的一个后端数据库

3617271862-5cac0bbec91ba_articlex.png

判断用户是否登陆过网站,以便下次登录时能够实现自动登录(或者记住密码)。

如果我们删除cookie,则每次登录必须从新填写登录的相关信息。

保存上次登录的时间等信息。 保存上次查看的页面 浏览计数访问
cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。
缺点

1002475378-5cad451ebe2c6_articlex.png

大小受限、用户可以操作(禁用)cookie,使功能受限、、安全性较低、有些状态不可能保存在客户端、每次访问都要传送cookie给服务器,浪费带宽、cookie数据有路径(path)的概念,可以限制cookie只属于某个路径下。

其他

2802638332-5cac3ab9932e1_articlex.png

1510531218-5cac3a4bc233e_articlex.png

携带cookie进行数据请求

cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递;
每次请求一个新的页面的时候cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可跨域调用。

Session

存放位置
session数据放在服务器上,客户端不知道其中的信息,不过session可以通过特殊的方式做持久化管理(memcache,redis);
使用方式

session在什么时候创建,以及session一致性问题

session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用检索不到,会新建一个),如果客户端请求不包含session id,则为客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。

通常使用cookie方式存储sessionid到客户端,在交互中浏览器按照规则将sessionid发送给服务器。如果用户禁用cookie,则要使用URL重写,可以通过response.encodeURL(url)
进行实现;API对encodeURL的结束为,当浏览器支持Cookie时,url不做任何处理;当浏览器不支持Cookie的时候,将会重写URL将SessionID拼接到访问地址后。

存储
session大小没有限制
session中保存的是对象,session通过类似与Hashtable的数据结构来保存,能支持任何类型的对象(session中可含有多个对象)
应用场景
Session用于保存每个用户的专用信息,变量的值保存在服务器端,通过SessionID来区分不同的客户。
  1. 网上商城中的购物车
  2. 保存用户登录信息
  3. 将某些数据放入session中,供同一用户的不同页面使用
  4. 防止用户非法登录
访问
session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。

缺点

Session保存的东西越多,就越占用服务器内存,对于用户在线人数较多的网站,服务器的内存压力会比较大、依赖于cookie(sessionID保存在cookie),如果禁用cookie,则要使用URL重写,不安全、创建Session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以,过度使用session变量将会导致代码不可读而且不好维护。

Atas ialah kandungan terperinci Cookie和Session的区别总结. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Di manakah fail video disimpan dalam cache penyemak imbas? Di manakah fail video disimpan dalam cache penyemak imbas? Feb 19, 2024 pm 05:09 PM

Dalam folder manakah penyemak imbas menyimpan video tersebut Apabila kita menggunakan pelayar Internet setiap hari, kita sering menonton pelbagai video dalam talian, seperti menonton video muzik di YouTube atau menonton filem di Netflix. Video ini akan dicache oleh penyemak imbas semasa proses pemuatan supaya ia boleh dimuatkan dengan cepat apabila dimainkan semula pada masa hadapan. Jadi persoalannya, dalam folder manakah video yang dicache ini sebenarnya disimpan? Pelayar yang berbeza menyimpan folder video cache di lokasi yang berbeza. Di bawah ini kami akan memperkenalkan beberapa pelayar biasa dan mereka

Bagaimana untuk melihat dan menyegarkan cache dns dalam Linux Bagaimana untuk melihat dan menyegarkan cache dns dalam Linux Mar 07, 2024 am 08:43 AM

DNS (DomainNameSystem) ialah sistem yang digunakan di Internet untuk menukar nama domain kepada alamat IP yang sepadan. Dalam sistem Linux, cache DNS ialah mekanisme yang menyimpan hubungan pemetaan antara nama domain dan alamat IP secara tempatan, yang boleh meningkatkan kelajuan resolusi nama domain dan mengurangkan beban pada pelayan DNS. Caching DNS membolehkan sistem mendapatkan semula alamat IP dengan pantas apabila kemudiannya mengakses nama domain yang sama tanpa perlu mengeluarkan permintaan pertanyaan kepada pelayan DNS setiap kali, dengan itu meningkatkan prestasi dan kecekapan rangkaian. Artikel ini akan membincangkan dengan anda cara melihat dan memuat semula cache DNS pada Linux, serta butiran yang berkaitan dan kod sampel. Kepentingan Caching DNS Dalam sistem Linux, cache DNS memainkan peranan penting. kewujudannya

Percepatkan aplikasi anda: Panduan ringkas untuk caching Guava Percepatkan aplikasi anda: Panduan ringkas untuk caching Guava Jan 31, 2024 pm 09:11 PM

Bermula dengan Cache Guava: Percepatkan Aplikasi Anda Cache Guava ialah perpustakaan caching dalam memori berprestasi tinggi yang boleh meningkatkan prestasi aplikasi dengan ketara. Ia menyediakan pelbagai strategi caching, termasuk LRU (paling kurang digunakan baru-baru ini), LFU (paling kurang digunakan baru-baru ini), dan TTL (masa untuk hidup). 1. Pasang cache Guava dan tambahkan pergantungan perpustakaan cache Guava pada projek anda. com.goog

Adakah fail HTML akan dicache? Adakah fail HTML akan dicache? Feb 19, 2024 pm 01:51 PM

Tajuk: Mekanisme caching dan contoh kod fail HTML Pengenalan: Semasa menulis halaman web, kita sering menghadapi masalah cache penyemak imbas. Artikel ini akan memperkenalkan mekanisme caching fail HTML secara terperinci dan menyediakan beberapa contoh kod khusus untuk membantu pembaca memahami dan menggunakan mekanisme ini dengan lebih baik. 1. Prinsip caching pelayar Dalam penyemak imbas, apabila halaman web diakses, penyemak imbas akan terlebih dahulu menyemak sama ada terdapat salinan halaman web dalam cache. Jika ada, kandungan halaman web diperoleh terus daripada cache Ini adalah prinsip asas caching pelayar. Faedah mekanisme caching pelayar

Penggunaan Lanjutan PHP APCu: Membuka Kunci Kuasa Tersembunyi Penggunaan Lanjutan PHP APCu: Membuka Kunci Kuasa Tersembunyi Mar 01, 2024 pm 09:10 PM

PHPAPCu (penggantian cache php) ialah cache opcode dan modul cache data yang mempercepatkan aplikasi PHP. Memahami ciri lanjutannya adalah penting untuk menggunakan potensi penuhnya. 1. Operasi kelompok: APCu menyediakan kaedah operasi kelompok yang boleh memproses sebilangan besar pasangan nilai kunci pada masa yang sama. Ini berguna untuk pembersihan atau kemas kini cache berskala besar. //Dapatkan kunci cache dalam kelompok $values=apcu_fetch(["key1","key2","key3"]); //Kosongkan kekunci cache dalam kelompok apcu_delete(["key1","key2","key3"]) ;2 .Tetapkan masa tamat tempoh cache: APCu membenarkan anda menetapkan masa tamat tempoh untuk item cache supaya ia tamat tempoh secara automatik selepas masa yang ditetapkan.

Amalan Terbaik APCu: Meningkatkan Kecekapan Aplikasi Anda Amalan Terbaik APCu: Meningkatkan Kecekapan Aplikasi Anda Mar 01, 2024 pm 10:58 PM

Mengoptimumkan Saiz Cache dan Strategi Pembersihan Adalah penting untuk memperuntukkan saiz cache yang sesuai kepada APCu. Cache yang terlalu kecil tidak boleh cache data dengan cekap, manakala cache yang terlalu besar membazirkan memori. Secara umumnya, menetapkan saiz cache kepada 1/4 hingga 1/2 daripada memori yang tersedia adalah julat yang munasabah. Selain itu, mempunyai strategi pembersihan yang berkesan memastikan data yang lapuk atau tidak sah tidak disimpan dalam cache. Anda boleh menggunakan ciri pembersihan automatik APCu atau melaksanakan mekanisme pembersihan tersuai. Kod sampel: //Tetapkan saiz cache kepada 256MB apcu_add("cache_size",268435456); //Kosongkan cache setiap 60 minit apcu_add("cache_ttl",60*60);

Mekanisme caching dan amalan aplikasi dalam pembangunan PHP Mekanisme caching dan amalan aplikasi dalam pembangunan PHP May 09, 2024 pm 01:30 PM

Dalam pembangunan PHP, mekanisme caching meningkatkan prestasi dengan menyimpan sementara data yang kerap diakses dalam memori atau cakera, dengan itu mengurangkan bilangan akses pangkalan data. Jenis cache terutamanya termasuk memori, fail dan cache pangkalan data. Caching boleh dilaksanakan dalam PHP menggunakan fungsi terbina dalam atau perpustakaan pihak ketiga, seperti cache_get() dan Memcache. Aplikasi praktikal biasa termasuk caching hasil pertanyaan pangkalan data untuk mengoptimumkan prestasi pertanyaan dan caching halaman output untuk mempercepatkan pemaparan. Mekanisme caching berkesan meningkatkan kelajuan tindak balas laman web, meningkatkan pengalaman pengguna dan mengurangkan beban pelayan.

Bagaimana untuk menyimpan fail video dari cache penyemak imbas ke setempat Bagaimana untuk menyimpan fail video dari cache penyemak imbas ke setempat Feb 23, 2024 pm 06:45 PM

Cara Mengeksport Video Cache Penyemak Imbas Dengan perkembangan pesat Internet, video telah menjadi bahagian yang sangat diperlukan dalam kehidupan seharian orang ramai. Semasa menyemak imbas web, kami sering menemui kandungan video yang ingin kami simpan atau kongsi, tetapi kadangkala kami tidak dapat mencari sumber fail video kerana ia mungkin hanya wujud dalam cache penyemak imbas. Jadi, bagaimanakah anda mengeksport video daripada cache penyemak imbas anda? Artikel ini akan memperkenalkan anda kepada beberapa kaedah biasa. Pertama, kita perlu menjelaskan konsep, iaitu cache pelayar. Cache penyemak imbas digunakan oleh penyemak imbas untuk meningkatkan pengalaman pengguna.

See all articles