初步了解HTTP协议
1.HTTP简介
- 全称:Hyper Text Transfer Protocol,中文名:超文本传输协议。
- 功能:HTTP是客户端浏览器或其他程序与web服务器之间的应用层通信协议。
- 特点:a.支持客户端/服务器模式。
b.简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。每种方法规定了客户端与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
c.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
d.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,并收到客户端的应答后,即断开连接。采用这种方式可以节省传输时间。
e.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
2.HTTP请求
HTTP最常见的两种请求方式:GET和POST。GET请求获取Request-URI所标识的资源,POST在Request-URI所标识的资源后附加新的数据。
两者之间的区别:GET请求用于URL形式,POST请求用于文件上传、表单提交等形式;
3.HTTP-Session
前面提到HTTP具有无状态的特点,Session就是服务器端使用的一种记录客户端状态的机制,Session以文件形式保存在服务器端,一般保存在服务器的内存里,但是过多的Session存储在服务器内存中,会对服务器造成压力。那么服务器是怎么识别这些客户端的呢?当浏览器访问一个程序时,服务器会分配一个Session ID给浏览器,并且是唯一标识。新打开的浏览器窗口会生成新的Session ID,但是子窗口除外,子窗口会共用父窗口的Session ID。关闭浏览器Session ID就会失效。例如,在一个链接上点击右键,选择“在新窗口中打开链接”,新窗口就是用的原来的Session ID。
4.HTTP-Cookie
除了Session以外,Web应用程序还经使常用Cookie来记录客户端状态,与Session不同的是,Cookie是保存在客户端本地的。客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。例如,登录时,点击记住密码或下次自动登录,下次访问网站时就不需要再次登录,直接访问即可。服务器把登录信息如账号、密码等保存在Cookie中,并控制Cookie的有效期,下次访问时服务器再验证Cookie中的登录信息,通过就可以登录了。
记录一个关于缓存的bug:在登录状态清除cookie和缓存,在之前打开的页面点击一个功能模块下的小模块,页面报错而不是跳转到登录界面。
初步了解HTTP协议的更多相关文章
- Cadence Allegro元件封装制作流程
(本文为转载,原文出处不详) 引言 一个元件封装的制作过程如下图所示.简单来说,首先用户需要制作自己的焊盘库Pads,包括普通焊盘形状Shape Symbol和花焊盘形状Flash Symbol:然后 ...
- 基于DirectShow的MPEG-4视频传输系统的研究与实现
1 引言 近年来,随着国民经济的发展,社会各个部门对于视频监视系统的需求越来越多.但目前的很多监视系统都跟具体的硬件相关,必须要具体的采集卡的支持才能实现.所以有必要开发一种具有通用性的视频监 ...
- 可靠UDP设计
最近加入了一个用帧同步的项目,帧同步方案对网络有着极大的影响,于是采用了RUDP(可靠UDP),那么为什么要摒弃TCP,而费尽心思去采用UDP呢?要搞明白这个问题,首先要了解TCP和UDP的区别 , ...
- 宿主机Windows访问虚拟机Linux文件(一)
如果用户使用windows操作系统,但是在虚拟机下配置Linux内核操作操作系统,往往需要实现通过宿主机Windows操作系统访问Linux内核操作系统中资源.本次实验实现的是宿主机windows 1 ...
- QUIC
QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议.在2016年11月国际互联网工程任务组(IETF)召开了第一次QUIC工作组 ...
- 11. Go 语言网络编程
Go 语言网络编程 Go语言在编写 web 应用方面非常得力.因为目前它还没有 GUI(Graphic User Interface 图形化用户界面)的框架,通过文本或者模板展现的 html 界面是目 ...
- Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用
一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...
- FFmpeg 协议初步学习
typedef struct URLContext { const AVClass *av_class; /**< information for av_log(). Set by url_op ...
- HTTP协议初步解析
一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,定义了Web客户端向Web服务器请求Web页面的 ...
随机推荐
- [资讯]同济D&I出品 | 绝对是史上最萌的机器人教具!!!
机器人小曼……" 3D打印.激光切割等先进工艺. Anibot中包含三种不同的动物形象:小鸡安妮.小鹿安娜.猫头鹰安迪.孩子们通过对各个元器件的学习及编程确保它们幸福成长在阳光氤氲的森林 ...
- Springboot整合Dubbo和Zookeeper
Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...
- Centos7上查看ext4文件系统的实际创建时间
前提:今日查看nginx日志时发现有报错,说是一些js,css文件找不到,于是想到去实际路径下查看文件是否确实不存在.结果出现下图中报错: 经过别人提醒查看文件的时间,于是看了一下登上服务器是9:52 ...
- OutputStream之flush() · 李大白写点儿啥
最近在做一个网络下载功能,I/O操作时,操作完OutputStream时写了flush(),目的是刷新输出流,将缓存写入物理设备.突然就想,这里是否需要flush()呢? 我当时的代码: 1 2 3 ...
- Promethues配置
# my global config global: scrape_interval: 10s # Set the scrape interval to every 15 seconds. Defau ...
- Autotestplat体验中心
web端 移动端 可戳[阅读原文]进行体验
- Linux 环境 搭建Git 服务器,并且修改SSH端口使用
1.环境配置说明 服务器 CentOS 7 + git(git version 1.8.3.1) 客户端 Windows10 + SourceTree 2.安装 Git 服务器端安装: sudo yu ...
- Context与ApplicationContext的区别
ApplicationContext并没有这个类,其实更应该叫做:Activity与Application在作为Context时的区别.嗯,的确是这样的,大家在需要Context的时候,如果是在Act ...
- go语言指南之斐波纳契闭包
练习:斐波纳契闭包 让我们用函数做些好玩的事情. 实现一个 fibonacci 函数,它返回一个函数(闭包),该闭包返回一个斐波纳契数列 `(0, 1, 1, 2, 3, 5, ...)`. 这是一个 ...
- python随用随学-元类
python中的一切都是对象 按着我的逻辑走: 首先接受一个公理,「python中的一切都是对象」.不要问为什么,吉大爷(Guido van Rossum,python之父)人当初就是这么设计的,不服 ...