十分钟了解HTTP协议

HTTP协议详解

概念

HTTP(Hypertext Transfer Protocol,超文本传输协议)是TCP/IP协议的应用(封装)。

HTTP协议是单向通讯,无状态,主要应用于B/S模型的网络软件,客户端一(多)个请求对应服务端一(多)个响应(客户端→服务端)。

HTTP协议传输的资源不仅仅是文本,还可以是图片,音视频等资源,并且通过URL(Uniform Resource Locators,统一资源定位器)来定位资源位置。

 

版本

HTTP 1.0: 短连接,一个请求响应后就断开连接。

HTTP 1.1 :长连接,多个请求响应后保持连接。

HTTP 2.0 :长连接,一个连接发起多个请求响应。特点是多路复用(压缩请求头,SPDY协议),传输二进制文件流,利于服务端推送消息。

 

工作原理

1. 用户打开Web浏览器,并访问Web站点。

2. Web浏览器(客户端)向Web服务端发出HTTP请求。

3. Web服务端根据收到HTTP请求后,返回对应的结果给Web浏览器。

 

请求方式

GET方式:在URL带参数请求,可缓存请求(适用于信息检索查询)

POST方式:在HTTP消息体带参数请求,可缓存请求,相同请求不会覆盖。(适用于表单提交)

PUT方式:在HTTP消息体带参数请求。不缓存请求,相同请求会以最后一次请求覆盖。(适用于表单修改提交)

DELETE方式:在URL带参数请求,不缓存请求。(适用于删除指定的资源)

PS:其他请求方式不常用,所以就不列举说明。

 

请求消息体

# 请求头部分
# [请求方式] [资源路径] [版本]
GET /xxxx HTTP/1.1
# 主机
Host: www.xxx.com
# 连接状态
Connection: keep-alive
# 兼容HTTP/1.0头部,控制缓存。 
Pragma: no-cache
# 控制缓存
Cache-Control: no-cache
# 用户代理
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 
# 客户端接受类型
Accept: */*
# Referer 原名 referrer,信息来源
Referer: http://www.xxxx.com
# 客户端接受内容编码方式
Accept-Encoding: gzip, deflate, br
# 客户端接受地区的语言
Accept-Language: zh-CN,zh;
(此处空格一行)
# 请求体部分
# 可以是图片、文本、音视频等资源。
...

响应消息体

# 响应头部分
# [版本] [状态码]
HTTP/1.1 200 OK
# 时间
Date: Thu, 27 Jun 2016 06: 25: 23 GMT
# 返回客户端内容类型
Content-Type: application/json
# 用于安全传输指令
Transfer-Encoding: chunked
# 是否允许客户端在页面使用<frame>, <iframe> 或者 <object> 中展现
X-Frame-Options: SAMEORIGIN
# 设置允许客户端资源来源
Access-Control-Allow-Origin: https: //www.qwant.com
# 返回客户端内容编码格式
Content-Encoding: gzip
# 强制客户端使用https访问
Strict-Transport-Security: max-age=31536000 ; includeSubdomains ; preload
# 服务器信息
Server: CamembertServer 10.6.6
# 控制客户端缓存
Cache-Control: no-cache, max-age=0
# 设置内容安全策略
Content-Security-Policy: default-src * data: blob:; script-src 'unsafe-inline' 'unsafe-eval' data: *.xxx.com; style-src 'unsafe-inline' data: *.xxx.com;
# 设置客户端检测或禁止加载xss脚本
X-XSS-Protection: 1; mode=block
(此处空格一行)
# 响应体部分
# 可以是图片、文本、音视频等资源。
...

 

状态码

200:服务器成功处理了请求。(请求随之响应)

206:服务器成功处理部分请求。(针对下载软件断点续传功能)

301:被请求的资源已永久移动到新位置。(会传递传递页面权重到新的url上)

302:被请求的资源已临时移动到新位置。(不会传递传递页面权重到新的url上)

304:无修改,客户的缓存资源是最新的,要客户端使用缓存。(针对缓存服务器系统)

305:用户代理,需要代理才能访问。(针对vpn)

400:客户端请求错误。(提交的数据不正确,服务器无法理解)

401:客户端请求身份未授权。(当前登陆账号或密码错误)

403:客户端请求身份认证通过,但权限不够。(禁止某些地区用户访问)

404:服务器无法找到所请求的URL。(该文件找不到)

501:服务器遇到一个错误,使其无法对请求提供服务。(服务器出错)

503:服务器目前无法为请求服务服务。(服务器维护中)

504:服务器超时。(服务器没有及时响应)

505:服务器http与客户端http协议不一致。(针对http协议版本问题)

PS:其他状态码不常用,所以就不列举说明。

 

补充:关于web服务器的一些理解。http服务器=web服务器

Apache是一个http服务器,不是web应用服务器。所以Apache不能直接支持jsp、php、asp.net。需要额外使用web应用服务器支持,也就是通过CGI、FastCGI、ISAPI等其他接口进行处理。(比如:Tomcat)

Apache之所以能支持解析php,是因为Apcahe是一个模块化的服务器,可以安装支持php模块,所以Apache就充当php服务器。(大多数的人可能喜欢使用WAMP一件套来开发,误认为Apache就是php服务器)

转载于:https://www.cnblogs.com/Sroot/p/5806280.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值