cookiesession

cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上它还有其他选择。

cookie机制:正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。

cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。

session机制:session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发送给服务器。一般这个cookie的名字都是类似于SEEESIONID。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。经常被使用的一种技术叫做URL重写,就是把session id直接附加在URL路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。比如:

<form name="testform" action="/xxx">
<input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">
<input type="text">
</form>

这种技术可以简单的用对action应用URL重写来代替。

转载于:https://www.cnblogs.com/ikuman/p/4140304.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python的应用图标_python实现根据图标提取分类应用程序实例

本文实例讲述了python实现根据图标提取分类应用程序&#xff0c;分享给大家供大家参考。具体方法如下&#xff1a;#!/usr/bin/python# -*- coding: utf-8 -*-import Imageimport win32uiimport win32guidef make_regalur_image(img, size (256, 256)):return img.resize(size)…

linux调用ocx插件_Wordpress file manager插件任意文件上传

白斩鸡卫兵实验室近日&#xff0c;Wordpress 插件file manager被爆出严重0day漏洞&#xff0c;本着技术研究角度&#xff0c;和大家分享、探讨其漏洞原因。该修复程序已在同一天发布&#xff0c;并且WP File Manager插件6.9版通过删除允许未经授权的文件上传访问的端点来解决当…

ActiveRecord教程

(一、ActiveRecord基础) ActiveRecord是Rails提供的一个对象关系映射(ORM)层&#xff0c;从这篇开始&#xff0c;我们来了解Active Record的一些基础内容&#xff0c;连接数据库&#xff0c;映射表&#xff0c;访问数据等。   Active Record使用基本的ORM模式&#xff1a;表映…

树莓派安装mysql5.6_Linux上安装MySQL5.6

OS & MySQL的版本号和配置&#xff1a;MySQL Version: 5.6.19Linux Version: Linux boston.oracle.com 2.6.18-164.el5 #1 SMP Thu Sep 3 02:16:47 EDT 2009 i686 i686 i386 GNU/Linux一。下载MySQL安装软件。请到www.oracle.com去找DATABASE DOWNLOAD。下载MySQL须要注冊一…

java获取cpu使用率_2019年阿里P8架构师的解析:最新Java性能测试、调优策略

一、性能测试Ⅰ.测试方法微基准性能测试可以精准定位到某个模块或者某个方法的性能问题&#xff0c;例如对比一个方法使用同步实现和非同步实现的性能差异宏基准性能测试宏基准性能测试是一个综合测试&#xff0c;需要考虑到测试环境、测试场景和测试目标测试环境&#xff1a;模…

Linux下的实模式和保护模式

实模式&#xff1a;&#xff08;即实地址访问模式&#xff09;它是Intel公司80286及以后的x86(80386,80486和80586等)兼容处理器&#xff08;CPU&#xff09;的一种操作模式。实模式被特殊定义为20位地址内存可访问空间上&#xff0c;这就意味着它的容量是2的20次幂&#xff08…

java在线编辑器_微软开源在线代码编辑器——Monaco Editor

介绍Monaco Editor是为VS Code提供支持的代码编辑器&#xff0c;运行在浏览器环境中。编辑器提供代码提示&#xff0c;智能建议等功能。供开发人员远程更方便的编写代码。移动浏览器或移动Web框架不支持Monaco编辑器。简单的理解就是VSCode中的代码编辑器和Monaco Editor使用的…

java的核心类库_Java核心类库,集合框架

Java集合框架的由来&#xff1a;Java最初版本只为最常用的数据结构提供了很少的一组类&#xff1a;比如Vector、Stack、Hashtable、BitSet、Enumerrationr接品&#xff0c;其中Enumerrationr接口提供了一种用于访问任意容器中各个元素的抽象机制。这是一种很明智的选择&#xf…

关于解决Permission is only granted to system apps

一句话&#xff0c;clean一下这个Project&#xff01;就OK了…… 不要被假象迷惑&#xff01;转载于:https://www.cnblogs.com/wytings/p/4156038.html

js splice方法_我用JS刷LeetCode | Day 8

如有兴趣&#xff0c;微信搜索「九零后重庆崽儿」&#xff0c;我们一起学前端。删除排序数组中的重复项:说明&#xff1a;现阶段的解题暂未考虑复杂度问题首发地址&#xff1a;我用JS刷LeetCode | Day 8​www.brandhuang.comQuestion&#xff1a;Given an array nums and a val…

java 删除目录下所有文件_Java删除文件、目录及目录下所有文件的方法实例

前言本文主要实现的功能是删除某个目录及目录下的所有子目录和文件&#xff0c;涉及到的知识点&#xff1a;File.delete()用于删除“某个文件或者空目录”&#xff01;所以要删除某个目录及其中的所有文件和子目录&#xff0c;要进行递归删除。具体代码示例如下&#xff1a;imp…

js 根据掩码位计算可用ip地址_变长子网掩码:轻松分配IP地址(下)

Hello,World.如约而至土土来更文咯[吐舌]图1首先先揭晓一下上一篇文章的答案那就是192.168.1.0/24与192.168.2.0/24不能ping通192.168.1.0/16与192.168.2.0/16能ping通图2还记得土土的提示吗&#xff1f;网络号相同则能够ping通那么根据/24可以看出这两个IP地址有24个网络号,即…

edittext实现自动查询,刷新listview

mEdittextqueryvalue.addTextChangedListener(new TextWatcher() {Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {/** 从本地数据库查询 */query s.toString(); //s是edittext编辑的内容isaddfalse;pageindex0;refreshView(type, que…

java rsaprivatekey_用ssh-keygen生成的公钥和私钥如何在java中转为RSAPublicKey和RSAPrivateKey...

公钥和私钥是用"ssh-keygen -t rsa"生成的&#xff0c;我把生成的公钥以字符串的形式传入下面的函数(从网上找的)就会报错。public static PublicKey string2PublicKey(String pubStr) throws Exception{ByteBuffer byteBuffer ByteBuffer.wrap(Base64.getDecoder().…

python字典中的值只能是字符串类型_python字典key不能是可以是啥类型

python中字典的key不能是可变类型。字典可存储任意类型对象&#xff0c;其中值可以取任何数据类型&#xff0c;但键必须是不可变的&#xff0c;如字符串、数字或元组。语法格式&#xff1a;【d {key1 : value1, key2 : value2}】。字典是另一种可变容器模型&#xff0c;且可存…

conda指定路径_导出不带前缀变量的conda环境,该变量显示executab的本地路径

为了在我的团队中提高可重复性&#xff0c;我在新创建的存储库中导出了一个conda环境文件&#xff0c;该存储库运行conda env export > environment.yml。在我的想法是让我的同事下载repo并运行conda env create -f environment.yml并准备好使用代码。在然而&#xff0c;我的…

未定义函数或变量_变量提升:JavaScript是顺序执行,为什么变量在定义之前执行不会报错而是报Underfined...

showName() console.log(myname) var myname hhh function showName() {console.log(函数showName被执行); }按照JavaScript 是按顺序执行的逻辑来理解的话&#xff0c;当执行到第 1 行的时候&#xff0c;由于函数 showName 还没有定义&#xff0c;所以执行应该会报错&#xf…

html背景图片大小控制

背景图尺寸(数值表示方式)&#xff1a; #background-size{ background-size:200px 100px; } 背景图尺寸(百分比表示方式)&#xff1a; #background-size{ background-size:30% 60%; } 背景图尺寸(等比扩展图片来填满元素&#xff0c;即cover值)&#xff1a; #background-size{ …

java break递归_【Java】递归总结

摘要&#xff1a;大师 L. Peter Deutsch 说过&#xff1a;To Iterate is Human, to Recurse, Divine.中文译为&#xff1a;人理解迭代&#xff0c;神理解递归。毋庸置疑地&#xff0c;递归确实是一个奇妙的思维方式。对一些简单的递归问题&#xff0c;我们总是惊叹于递归描述问…

python3 urllib3文档_python urllib3

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…