HTTP协议

http:超文本传输协议,属于应用层协议
通过浏览器,我们可以很方便地用http协议与其他主机通信。当然我们也可以使用curl,但浏览器会帮我们解析HTML,而curl不会。(curl是什么?打开命令行,输入“man curl ”)

HTTP请求与HTTP响应

对于使用http协议通信的应用,在数据包的应用数据段具有统一的格式。
第一行为请求行(响应行),第二行起至空白行前为请求头(响应头),空白行后为请求正文(响应正文)。

如下为一个HTTP请求

POST /example.php HTTP/1.1
Host: example.com
Connection: keep-alive

a=1

第一行:POST表示POST请求方法,/example.php 表示请求的资源,HTTP/1.1 表示使用的是HTTP1.1版本
第二行起至空白行:每一行都是一个键值对(请求头),如Host: example.com表示访问的主机域名为example.com(键值对数量不确定)
空白行后:传输的数据。

如下为一个HTTP响应

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Encoding: br

......

第一行:HTTP/1.1表示HTTP版本1.1,200为状态码,OK可忽略
第二行起至空白行:每一行都是一个键值对(响应头)(键值对数量不确定)
空白行后:传输的数据。

请求方法

上文例子中我们使用的是POST请求方法,实际上有多种请求方法,以下列举部分。
• GET 将要传输的数据加入URL中,如http://example.com/index.php?user=1,其中user=1就是要传输的数据,值得一提的是,如果我们请求一个动态脚本,那么返回的是服务端已经解析的HTML代码,而不是脚本源代码。
• POST 将要传输的数据放入请求正文。
• HEAD 对于使用HEAD方法请求,服务端将不返回响应正文,其余同POST和GET方法。如果我们仅仅测试一个资源是否存在,HEAD方法无疑是最佳的(也就是方便我们快速扫描目录)。
• PUT 将数据存储在服务端下(服务器一般关闭此方法)
• DELETE 将指定资源删除(服务器一般关闭此方法)

请求头与响应头

以下列举部分请求头
• Host 表明请求的主机
• User-Agent 浏览器标识
• Cookie 即cookie
• Referer 表明用户从哪个URL来访
• X-Forwarded-For 表明用户端ip,如果有多个中间用逗号隔开
以下列举部分响应头
• Server 包含一些服务端信息,服务端可修改此部分消息
• Set-Cookie 设置cookie

状态码

状态码为三位数,第一位为1至5,含义如下
• 1xx 请求已被服务端接收
• 2xx 请求已被服务端处理
• 3xx 重定向
• 4xx 客户端错误,比如说输入了错误的URL
• 5xx 服务端错误,比如服务器过于繁忙

参考《web安全深度剖析》张炳帅 编著
参考 https://www.w3.org

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值