欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

http协议学习笔记

程序员文章站 2022-06-28 17:45:58
...

原理

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:
返回服务器是否可用

状态码和状态文字

状态码是用来反应服务器响应情况的。
状态文字是用来描述状态码的,便于人阅读
http协议学习笔记
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

优化

相关标签: C++