黑客攻防技术宝典-Web实战篇——第三章、Web应用程序技术——HTTP(一)

第三章、Web应用程序技术——HTTP(一)

上章提到,这一章包含了web的基础知识,重点为

  • HTTP
  • web功能
  • 编码方案

如果各位有web经验者提出建议,感激不尽。

3.1、HTTP

HTTP(HyberText Transfer Protocol),超文本传输协议。它是访问万维网核心通信协议。最初 用来传输静态文档。后来经过扩展利用,支持web应用程序这种复杂的传输。

HTTP是用于传输HTML文档的==应用层==协议,它遵循 客户端-服务器 模型:

  1. ==客户端==与服务器==建立连接==
  2. ==客户端==向服务器==发出请求==
  3. ==服务器==响应请求==返回数据==
  4. ==客户端==与服务器==断开连接==


    C/S模型

此外,HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据。也就是说请求之间完全独立。
这也是第一章中为什么要用session(会话)和cookie的原因。因为无状态的http协议无法保存用户信息之类的数据。

HTTP消息(报文)

HTTP消息分为两种,请求与响应。每个消息组成:

  • 消息头(header)(一个消息头是其中的一行或多行)
  • 空行
  • 消息主体(可选)

HTTP请求

HTTP请求举例如下:

GET /item/http HTTP/1.1         //请求方法  URL请求资源名称  HTTP版本号
Host: baike.baidu.com           //请求完整URL的主机名
Connection: keep-alive          
Cache-Control: max-age=0    
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36   //客户端系统的概况,浏览器内核等等
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Referer: https://baike.baidu.com/item/http/243074?fr=aladdin
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie:                             //提交浏览器发给用户的参数

HTTP响应

HTTP响应举例如下:

HTTP/1.1 200 OK                     //HTTP版本号  数字状态码  响应状态
Bdpagetype: 3
Bdqid: 0xde99cb9f00006bf2
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8     //消息主体的文档类型
Cxy_all: 
Cxy_ex: 
Date: Sun, 12 Jan 2020 07:38:52 GMT
Is_status: 0
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1                     //指明服务器软件,有时还有服务器所安装模块和系统
Set-Cookie:                         //向浏览器发送一个cookie,在随后的请求中会返回
Set-Cookie: 
Set-Cookie: 
Set-Cookie: 
Set-Cookie: 
Set-Cookie: 
Strict-Transport-Security: max-age=172800
Traceid: 
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked

HTTP请求方法

最常用的两种请求方法:GET、POST

==GET方法==(读取):获取请求的资源,无论获取多少遍都对资源没有副作用。GET请求没有消息主体,因此在消息头后的空白行是没有其他数据
==POST方法==:执行操作,向服务器发送含参数的消息主体,这会对请求的资源产生副作用。比如点击下单操作,服务器将返回下单之后的内容。

其他请求方法:

HEAD:这个请求的功能与GET请求相似,不同之处在于服务器不会再其响应中返回消息主体,因此,这种方法可用于检查某一资源在向其提交GET请求前是否存在。
TRACE:在返回响应主体中包含请求消息的内容。用于检测是否有代理。
OPTION:用于服务器报告对于某一特定资源的有效HTTP方法。
PUT:试图使用包含在请求主体里的内容,向服务器上传指定资源。渗透人员可以通过上传任意脚本执行来攻击。

URL

URL(Uniform Resource Locator),统一资源定位符。是标识web资源的唯一标识符。
具体格式如下:

protocol://hostname[:port]/[/path]file[?pram=value]

其实正式属于叫做URI(Uniform Resource Identifier),统一资源标识符。有人非要炫耀着这么叫,就给他两巴掌。

HTTP消息头

常用消息头

  • Connection:用于高速通信另一端保持连接还是关闭
  • Content-Encoding:指定消息主体的编码形式
  • Content-Length:规定消息主体的字节长度
  • Content-Type:规定消息主体的内容类型
  • Transfer-Encoding:指定消息主体使用任何编码(块编码)

请求消息头

  • Accept:告诉服务器愿意接受哪些内容
  • Accept-Encoding:告诉服务器客户端愿意接受哪种编码
  • Authorization:用于为一种内置HTTP身份验证向服务器提交证书
  • Cookie:向服务器提交它以前发布的cookie
  • Host:指定现在被请求的完整URL的主机名
  • Referer:用于指示提出当前请求的原始URL
  • User-Agent:提供浏览器的信息

响应消息头

  • Cache-Control: 向浏览器传送缓存指令(如no-cache)
  • Server:提供web服务器软件信息
  • Set-Cookie:用于向浏览器发布cookie,浏览器在随后的请求中返回服务器

要考试了,所以这一节分两次写,溜了溜了

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Web 页面的实现 Web 基于 HTTP 协议通信 客户端(Client)的 Web 浏览器从 Web 服务器端...
    毛圈阅读 4,943评论 0 2
  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 5,916评论 0 3
  • API定义规范 本规范设计基于如下使用场景: 请求频率不是非常高:如果产品的使用周期内请求频率非常高,建议使用双通...
    有涯逐无涯阅读 7,828评论 0 6
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 5,045评论 0 7
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 7,611评论 2 20

友情链接更多精彩内容