http协议学习笔记
原理
HTTP(Hyper Text Transfer Protocol)超文本传输协议。是用于从web服务器传输超文本到本地浏览器的传输协议。HTTP是一个应用层协议,由请求和响应构成,是一个标准的个客户端和服务器模型.
HTTP协议定义了web客户端如何从web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型.客户端向服务器发送一个请求报文,请求报文包括请求的方法,url,协议版本,请求头部和请求数据.服务器以一个状态行作为响应,响应的内容包括协议的版本,成功或者错误代码,服务器信息,响应头部和响应数据。
HTTP 请求与响应消息的格式
请求:
1 请求行 :
请求的方法:GET POST PUT DELETE TRACE OPTIONS HEAD
请求URL: 就是URL的一部分
协议版本:
GET /cms/page/get/1 HTTP/1.1
2 请求头信息
Host: 192.168.1.4:31001
3 头信息结束后和主体信息之间要空一行
4 请求主体信息
响应:
1 响应行:协议版本 + 状态码 + 状态文字
HTTP/1.1 200
2 响应头信息:
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 09 Jul 2020 06:33:30 GMT
3 空行
4 响应主体信息:
body
请求方法详解
GET:
当客户端要从服务器上读取文档,点开某个链接,或者是通过浏览器上输入网址来浏览网页的时候,使用的都是GET方法。GET方法请求参数和对应的值附加在URL后面,利用一个?代表URL的结尾以及附带参数的开始,参数用key=value键值对的方式书写,参数和参数之间用&符号隔开.一般GET请求的参数的大小受限,最大不超过1024。
POST:
POST方法将请求的参数封装在了HTTP请求的请求体中,以名称/值的形式出现,可以传输大量的数据.POST请求一般用于表单数据的提交中。
HEAD:
确认一个文件是否存在,不需要返回文件的内容
TRACE:
使用代理上网时,使用TRACE看看代理有没有修改你的HTTP 请求。
OPTIONS:
返回服务器是否可用
状态码和状态文字
状态码是用来反应服务器响应情况的。
状态文字是用来描述状态码的,便于人阅读
302 :临时或永久重定向
304:未修改
307:重定向中保持原来的请求数据
常见的报文头
If-Modified-Since 资源未被修改的情况下返回304未修改
ETag:
If-None-Match:
实战
1 反盗链
Referer: 代表网页的来源,即上一页的地址。
在web服务器层面,根据http协议的referer头信息来判断。如果来自站外,则统一重写到一个很小的防盗链图片上。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ..(jpg|jpeg|gif|png) [NC]
RewriteCond %{HTTP_REFERER} !localhost [NC]
RewriteRule . http://wwww.xxxx.com/static/image/common/logo.png
优化
上一篇: HTTP学习笔记
下一篇: 程序设计【Week9】作业