当前位置: 首页 > news >正文

关于HTTP的一些基本概念

首先,有个基本的概念

HTTP协议是基于TCP/IP协议模型来传输信息的

点击了解HTTP详细信息      点击了解什么是IP地址      点击了解DNS

HTTP协议用于在Internet上发送和接收消息,HTTP协议是一种请求-应答式的协议,客户端发送一个请求,服务器返回该请求的应答,HTTP协议使用可靠的TCP连接,默认端口是80.
在HTTP中,Client/Server之间的会话总是由客户端通过建立连接和发送HTTP请求包初始化,服务器不会主动联系客户端或要求与客户端建立连接,浏览器和服务器都可以随时中断连接.

HTTP请求

先说一下HTTP请求,http请丢是由请求行(requestline)、请求头部(header)、空行和请求数据4个部分组成, 请求数据可以有,也可以没有,但空行是不能省略的,用以将请求头和请求内容分开.
1.请求行:
请求行分为三个部分:请求方法、请求地址和协议版本.
请求方法: HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。
请求地址: URL:统一资源定位符,是一种标志资源位置的方法。
协议版本: 协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1
2.请求头:
请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔.

3.请求数据:
可选部分,比如GET请求就没有请求数据。 下面是一个POST方法的请求报文:

POST  /index.php HTTP/1.1    请求行
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost/
Content-Length:25
Content-Type:application/x-www-form-urlencoded
  空行
username=aa&password=1234  请求数据

HTTP响应

HTTP响应报文主要由状态行、响应头部、空行以及响应数据组成。

1.状态行: 由3部分组成,分别为:协议版本,状态码,状态码描述。

其中协议版本与请求报文一致,状态码描述是对状态码的简单描述,所以这里就只介绍状态码。

状态码

状态代码为3位数字。
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。

下面列举几个常见的:

了解更多状态码

3.响应数据
用于存放需要返回给客户端的数据信息。

下面是一个响应报文的实例:

HTTP/1.1 200 OK  状态行
Date: Sun, 17 Mar 2013 08:12:54 GMT  响应头部
Server: Apache/2.2.8 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4393
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
  空行
  
如何使用curl命令

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
curl使用详解

如何用Chrome开发者工具查看 HTTP 请求和响应

打开Chrome浏览器的任意一个页面,右键->检查->Network 然后输入网址或直接刷新页面,就可以看到浏览器与服务器交互的信息,随便点击一个,在右边就会显示出该文件请求和响应的过程.

相关文章:

  • 【Datastage】函数大全
  • 关于kubernetes拉取私库镜像需要注意的点
  • Python学习之路16-使用API
  • 报错:在做往下拉选里面拼接数据的时候 3个下拉选显示一个值 原因 @scope(单例)或者没配默认单例...
  • flask接收请求并推入栈
  • 从PRISM开始学WPF(八)导航Navigation?
  • 手把手教你将单机游戏改造成对战网游(附详细教程)
  • P2264 情书
  • Spring Boot的@Service和@Autowired和@ComponentScan注解
  • 两个变量交换的四种方法(Java)
  • 分布式消息队列ActiveMQ+Spring整合
  • Vue2.x学习三:事件处理生命周期钩子
  • MySQL的prompt不生效的问题
  • Django之ModelForm(二)-----ModelForm组件
  • Lua使用总结
  • 【mysql】环境安装、服务启动、密码设置
  • fetch 从初识到应用
  • HashMap剖析之内部结构
  • Java的Interrupt与线程中断
  • Median of Two Sorted Arrays
  • npx命令介绍
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Vue2 SSR 的优化之旅
  • webpack4 一点通
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 百度地图API标注+时间轴组件
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 前端_面试
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何设计一个比特币钱包服务
  • 学习HTTP相关知识笔记
  • 一个完整Java Web项目背后的密码
  • 正则学习笔记
  • 智能网联汽车信息安全
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Java数据解析之JSON
  • Nginx实现动静分离
  • Python 之网络式编程
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (二)hibernate配置管理
  • (二)pulsar安装在独立的docker中,python测试
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)Linux+Windows下安装ffmpeg
  • (转)可以带来幸福的一本书
  • (转)平衡树
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复