HTTP协议

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都 必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了 一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。 Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的

HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层

HTTP 无需加密,而 HTTPS 对传输的数据进行加密
HTTP 无需证书,而 HTTPS 需要认证证书

抓取一个HTTP请求
使用firefox浏览器抓取

使用burpsuite抓取
HTTP请求包

http请求由三部分组成,分别是:请求行、消息报头、请求正文。

请求行

1/3

必知必会的http协议-鹿衔草 5号黯区-一支致力于红队攻防研究与培训的团队
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。

格式如下:Method Request-URI HTTP-Version CRLF

Method表示请求方法代码
Request-URI是一个统一资源标识符
HTTP-Version表示请求的HTTP协议版本
CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

常见的请求方法

GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

消息报头

Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101
Firefox/66.0
Accept: image/webp,*/*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer: https://www.baidu.com/
Connection: keep-alive
Cookie: BAIDUID=636AC4A6764AA5693A158824605F2ECA:FG=1;
BIDUPSID=636AC4A6764AA5693A158824605F2ECA; PSTM=1555151944; delPer=0; BD_HOME=0;
H_PS_PSSID=1464_21088_29064_28518_29098_29139_28836_28585_26350_29133_20719

一些常见的请求报头

User-Agent:包含发出请求的用户信息。
Accept:Accept请求报头域用于指定客户端接受哪些类型的信息。eg:Accept:image/gif,表明客户端希望接受
GIF图象格式的资源;Accept:text/html,表明客户端希望接受html文本。
Referer:告诉服务器我是从哪个页面链接过来的
Cookie:身份凭证

HTTP响应包

HT T P响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。
2/3

必知必会的http协议

状态行
状态行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version表示服务器HTTP协议的版本
Status-Code表示服务器发回的响应状态代码
Reason-Phrase表示状态代码的文本描述。

常见的状态码

200 OK 客户端请求成功
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

消息报头

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=315360000
Connection: Keep-Alive
Content-Length: 705
Content-Type: image/gif
Date: Sat, 01 Jun 2019 05:46:40 GMT
Etag: "2c1-4a6473f6030c0"
Expires: Tue, 29 May 2029 05:46:40 GMT
Last-Modified: Wed, 22 Jun 2011 06:40:43 GMT
Server: Apache

一些常见的响应报头

Server Web服务器名称
Set-cookie 服务器向客户端发送的信息
Location 服务器通过这个头告诉浏览器去访问哪个页面,浏览器接收到这个请求后,通常会立刻访问Location头所
指向的页面,通过配合302状态码
Refresh 服务器通过这个告诉浏览器定时刷新浏览器

`

最新文章

  1. 将项目上传到git上,并在测试服务器上运行
  2. BOM和DOM(精简版)
  3. linux-kernel 学习计划
  4. memory model
  5. fadein()
  6. C语言实现两栈空间共享
  7. For循环复杂练习
  8. 武汉科技大学ACM:1007: 文本编辑器
  9. oracle数据泵之解决方案(用户)导入导出。
  10. 移动端开发(一. Viewport(视窗))
  11. Node笔记二
  12. IntelliJ IDEA添加jar包
  13. pytorch 参数初始化
  14. 关于repaint和reflow的笔记
  15. Android笔记:ContextMenu
  16. iOS 10 的一个重要更新-自定义的通知界面
  17. POJ-2081 Recaman's Sequence
  18. POJ 1141 Brackets Sequence(括号匹配二)
  19. asp.net MVC 3/4 equivalent to a response.filter
  20. 使用CXF实现基于Rest方式的WebService

热门文章

  1. 【转载】解决StackOverFlow不能登录的问题
  2. 脸书VS微软,为何“老年创业者”更担忧AI失控?
  3. 对BFC的深层理解
  4. springDataJPA笔记
  5. snmp服务配置
  6. linux 下修改最大文件数
  7. 前端每日实战:52# 视频演示如何用纯 CSS 创作一个小球绕着圆环盘旋的动画
  8. js轮询及踩过的坑
  9. Matplotlib数据可视化(6):饼图与箱线图
  10. redis 出现(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details