http总结及实践

本文深入讲解HTTP协议的基础概念,包括其定义、特点、消息结构、常用方法与响应头,以及HTTP版本与状态码的详细解读。

HTTP定义

1 HTTP协议(超文本传输协议)是因特网上应用最为广泛的一种网络传输协议。
  是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
2 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

从上面可以得到结论:
1 还是有其它协议的,只不过HTTP协议市场占有率最高。比如文件传输的协议ftp,当然,现在一般都用sftp了;还有邮件传输协议,mail:
2 HTTP协议可以传输数据,其实这些数据才是我们最本质的东西

HTTP常见知识

1 HTTP是无连接的,每次连接处理一个请求,然后就断开连接了;这样可以节省传输时间
2 任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
3 HTTP是无状态的,对于事务处理没有记忆能力。如果后续处理需要前面的信息,则必须重传。
4 默认端口是80,常见的服务器是Apache服务器和IIS服务器。

消息结构

在这里插入图片描述
在这里插入图片描述

常用方法

方法描述
GET从服务器获取一份文档
POST向服务器发送需要处理的
PUT将请求的主题部分存储在服务器上
DELETE从服务器删除一份文档
HEAD只从服务器获取头文档的首部
TRACE对可能经过代理服务器传送到服务器上的报文进行追踪
OPTIONS决定可以在服务器上执行的方法
  • GET和POST的区别
    简单的说:GET传输,参数是明文显示,会跟在请求网址后面
    POST传输会把参数打包到请求主体中
    在这里插入图片描述
    上面就是用的GET请求,账号啊,密码啊都跟在请求后面,可以看见
    在这里插入图片描述
    百度这里对密码加密了,而且POST请求在地址后面也不会跟着用户名和密码
  • GET请求可被缓存,POST不能
  • GET请求保留在浏览器历史记录中,POST不能
  • GET请求可被收藏为书签,POST不能
  • GET请求不应该在处理敏感数据时使用
  • GET请求有长度限制
  • GET请求只应当用于取回数据
    这里进行一下对比
区别GETPOST
后退按钮/刷新没有影响数据会被重新提交(浏览器应该告知用户数据会被重新提交)
书签可收藏未书签不可收藏为书签
缓存可被缓存不能缓存
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded或multipart/form-data。为二进制数据使用多重编码
历史参数保留在浏览器历史中参数不会保存在浏览器历史中
数据长度有限制,当发送数据时,GET方法向URL添加数据;URL的长度是受限制的(URL的最大长度是2048个字符)。无限制
数据类型只允许ASCII字符没有限制。也允许二进制数据
安全性与POST相比,GET的安全性较差,因为所发送的数据是URL的一部分。在发送密码或其他敏感信息时绝对不要使用GETPOST比GET更安全,因为参数不会被保存在浏览器历史或者WEB服务器日志中
可见性数据在URL中对所有人都是可见的数据不会显示在URL中

HTTP的响应头

从外面诸多博客偷点图

Header说明示例
Accept指定客户端能够接收的内容类型Accept: text/plain, text/html
Accept-Charset浏览器可以接受的字符编码集Accept-Charset: iso-8859-5
Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。Accept-Encoding: compress, gzip
Accept-Language浏览器可接受的语言Accept-Language: en,zh
Accept-Ranges可以请求网页实体的一个或者多个子范围字段Accept-Ranges: bytes
AuthorizationHTTP授权的授权证书Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control指定请求和响应遵循的缓存机制Cache-Control: no-cache
Connection表示是否需要持久连接。(HTTP 1.1默认进行持久连接)Connection: close
CookieHTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器Cookie: $Version=1; Skin=new;
Content-Length请求的内容长度Content-Length: 348
Content-Type请求的与实体对应的MIME信息Content-Type: application/x-www-form-urlencoded
Date请求发送的日期和时间Date: Tue, 15 Nov 2010 08:12:31 GMT
Expect请求的特定的服务器行为Expect: 100-continue
From发出请求的用户的EmailFrom: user@email.com
Host指定请求的服务器的域名和端口号Host: www.zcmhi.com
If-Match只有请求内容与实体相匹配才有效If-Match: “737060cd8c284d8af7ad3082f209582d”
If-Modified-Since\如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
If-None-Match如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变If-None-Match: “737060cd8c284d8af7ad3082f209582d”
If-Range如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为EtagIf-Range: “737060cd8c284d8af7ad3082f209582d
If-Unmodified-Since只在实体在指定时间之后未被修改才请求成功If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
Max-Forwards限制信息通过代理和网关传送的时间Max-Forwards: 10
Pragma用来包含实现特定的指令Pragma: no-cache
Proxy-Authorization连接到代理的授权证书Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range只请求实体的一部分,指定范围Range: bytes=500-999
Referer先前网页的地址,当前请求网页紧随其后,即来路Referer: http://www.zcmhi.com/archives/71.html
TE客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息TE: trailers,deflate;q=0.5
Upgrade向服务器指定某种传输协议以便服务器进行转换(如果支持)Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-AgentUser-Agent的内容包含发出请求的用户信息User-Agent: Mozilla/5.0 (Linux; X11)
Via通知中间网关或代理服务器地址,通信协议Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning关于消息实体的警告信息Warn: 199 Miscellaneous warning

然后响应部分其实差不多,可以百度看下,多的很

HTTP版本及状态码

HTTP/0.9 1991年的HTTP原型,有设计缺陷
HTTP/1.0 第一个广泛应用的版本
HTTP/1.0+ 添加持久的KEEP-ALIVE连接,虚拟主机支持,代理连接支持,成为非官方的事实版本
HTTP/1.1 校正结构性缺陷,明确语义,引入重要的性能优化措施,删除不好的特性

状态码

状态码解释
200请求成功
301资源移动,浏览器自动跳转到新的URL
304未修改,请求资源未修改,浏览器读取缓存数据
400请求语法错误,服务器无法解析
404未找到资源,可以设置个性404页面
500服务器内部错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李卓书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值