HTTP请求

前言

  • HTTP 基于 TCP/IP 通信协议来传递数据

  • HTTP 基于客户端/服务器(C/S)结构模型

  • 通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议

  • 限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节约传输时间

  • 只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

  • Multipurpose Internet Mail Extension type 多用途互联网邮件扩展类型

  • 协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

  • HTTP报文定义:在客户端与服务端之间发送的数据块。这些数据块以一些文本的元信息(meta-information)开头,描述了报文的内容及含义,后面跟着可选的数据部分,这些报文在客户端、服务器和代理之间流动。所以HTTP报文的发送也叫报文流

  • 每条HTTP报文包含一个客户端请求和服务器响应(请求报文Request 和 响应报文Response)

报文的组成

  1. 对报文进行描述的起始行

  2. 包含属性的首部 / 头部(header)

  3. 包含数据的主体(body) (可选项)

基本格式

报文的分类

  • GENERAL(通用报)
  • REQUEST HEADERS(请求报)
  • RESPONSE HEADERS(响应报)

请求方式

GET/POST

OPTIONS:返回服务器针对特定资源所支持的HTTP请求方式

HEAD:返回与 GET 请求相一致的响应,响应体被返回

PUT:向指定资源位置上传其最新内容(form表单不支持)

DELETE:请求服务器删除Request-URI 所识别的资源(form表单不支持)

TRACE:回显服务器收到的请求,主要用于测试或者诊断

CONNECT:连接改为管道方式的代理服务器

  • put 上传资源,form表单不支持,提交即存储的原则(无验证机制,安全漏洞)、需配置服务器支持 put 方式转发打给后端操作

  • delete 删除资源,form表单不支持、提交即删除的原则(无验证机制,安全漏洞)、需配置服务器支持 delete 方式转发打给后端操作

  • post 修改资源

  • get 获取资源

get/post访问

  1. POST 更安全:不会作为 url 的一部分,不会被缓存。保存在服务器日志和浏览器记录中

  2. POST 发送的数据更大(GET有 url 长度限制):

    长度限制:IE(2083字节)、firefox(65536字节)、chrome(8182字节)、safari(80000字节)、opera(190000字节)

  3. POST 能发送更多的数据类型(各种类型的文件)

  4. POST 比 GET 速度慢

    1. POST 请求头包含更多内容

    2. POST 接收数据之前会先请求头发送给服务器确认,然后发送数据

      • 第三次握手,浏览器确认并发送 post 请求头
      • 服务器返回状态码100后,continue响应
      • 浏览器开始发送数据
      • 服务器返回 200 Ok 响应
    3. get 过程

      • 第三次握手,浏览器确认并发送请求头和数据
      • 服务器返回 200 OK 响应
    4. GET会进行数据缓存,POST不会

    5. POST不能进行管道化传输

串行连接

持久化连接

connection:keep-alive:(HTTP/1.0、1.1) 连接不会关闭

管道化持久化连接

(http/1.1 -> 把所有请求放到发送队列里,不等响应,一个一个发送请求的同时接收相应的响应)

相关推荐
roman_日积跬步-终至千里5 小时前
【Java并发】Java 线程池实战:警惕使用CompletableFuture.supplyAsync
java·开发语言·网络
2的n次方_6 小时前
Runtime 内存管理深化:推理批处理下的内存复用与生命周期精细控制
c语言·网络·架构
郝学胜-神的一滴7 小时前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
天若有情6737 小时前
【自研实战】轻量级ASCII字符串加密算法:从设计到落地(防查岗神器版)
网络·c++·算法·安全·数据安全·加密
胖咕噜的稞达鸭7 小时前
网络基础:初识TCP/IP协议
网络·网络协议·tcp/ip
全栈工程师修炼指南8 小时前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
cur1es8 小时前
【UDP的报文结构】
网络·网络协议·udp·md5
闲人编程8 小时前
使用FastAPI和WebSocket构建高性能实时聊天系统
websocket·网络协议·网络编程·fastapi·持久化·实时聊天·codecapsule
惊讶的猫9 小时前
OpenFeign(声明式HTTP客户端)
网络·网络协议·http·微服务·openfeign
心.c9 小时前
TCP协议深入解析
网络·网络协议·tcp/ip