首页 > 其他分享 >Web开发学习HTTP协议、通过浏览器控制台学习HTTP协议。

Web开发学习HTTP协议、通过浏览器控制台学习HTTP协议。

时间:2023-12-06 20:12:45浏览次数:36  
标签:Web HTTP 浏览器 请求 协议 响应 数据格式 服务器

@

目录

HTTP协议

1.HTTP协议是什么?

HTTP协议是一种超文本传输协议,规定了浏览器和服务器之间的数据传输的规则(也可以说是浏览器与服务器之间进行数据交互的数据格式)

例如,浏览器需要向服务端发送请求来获取一些数据,因此浏览器携带请求数据先向服务器发送请求,服务器解析浏览器的请求数据后再给浏览器响应对应的数据,让浏览器解析。浏览器和服务器之间进行数据交互,需要按照约定的数据格式进行双方才能进行相应的数据解析。

HTTP概括如下:

  • HTTP协议是用于从服务器传输超文本到本地浏览器的传送协议。
  • HTTP基于TCP/IP通信协议进行传送数据(数据可以是HTML文件,图片,查询结果等)
  • HTTP是一个属于应用层的面向对象的协议。
  • HTTP协议工作于客户端-服务器架构之上。

2.HTTP协议的特点

  • HTTP支持B/S(浏览器与服务器架构模式)模式C/S(客户机与服务器架构)模式
  • 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径即可。请求方法包括GET、POST、PUT、HEAD等。
  • 灵活性:HTTP允许传输任意类型的数据对象。
  • 面向连接:限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的应答后,立即断开。可以节省传输时间。
  • 无状态:HTTP协议对于处理没有记忆能力,如果在处理过程中客户端与服务器端之间的连接断开,则数据必须重传。每次请求-响应都是独立的,速度会比较快但同时也导致多次请求间不能共享数据。
  • 基于请求-响应模型:一次请求对应一次响应

3.什么是URL?

HTTP使用URI(统一资源标识符)来传输数据和建立连接。

URL是一种特殊类型的URI,包含了用于查找某个资源的足够信息。它用于定位和识别互联网上的资源的地址。它是一个字符串,由多个部分组成,用于指定资源的位置和协议。

简单来说我们平时在浏览器中所看到的网址就是URL,在项目开发中我们需要指定文件,图片的位置也是URL。

以一个URL示例:https://www.example.com/index.html
一个URL主要包括以下几个部分

  • 协议部分:“https://”,指定使用的协议
  • 域名部分:指定了资源所在的服务器域名。
  • 路径部分:指定了服务器上资源的路径。

URL还可以包含其他部分,如查询参数、片段标识符等,用于进一步定位和描述资源。
例如本博客草稿的URL:https://i.cnblogs.com/posts/edit;postId=17878440

4.通过浏览器控制台学习HTTP协议

1.按下F12按键或者右建"检查",打开开发者工具

2.选择网络(Network)查看请求内容

3.点击这个请求,就可以看到相关的协议信息

部分浏览器是英文显示,显示的内容为:General(常规),Response Headers(响应标头),Request Headers(请求标头)

4.点击旁边的按钮“原始”,则会显示原始数据格式

可以看到,原始数据格式就是文本字符串,且这个文本字符串的格式是固定的

Request Headers请求数据格式说明

请求数据格式大致分为三个部分:请求行,请求头,请求体

1.请求行:即请求数据的第一行,由请求方式(GET或POST),资源路径,请求协议三部分组成。

  • GET请求方式:没有请求体,大小有限制
  • POST请求方式:有请求体,无大小限制

2.请求头:请求头为“key:value"的格式,即"请求头:请求头值"的形式。
请求头的值中会包含很多信息,包括浏览器版本,主机地址,数据格式等

常见的请求头的值

请求头名称 请求头的值
Host 请求的主机名
User-Agent 浏览器版本
Accept 表示浏览器能接收的资源类型
Accept-Language 表示浏览器的偏好语言,服务器可以据此返回不同语言的网页
Accept-Encoding 表示浏览器可以支持的压缩类型
Content-Type 请求主体的数据类型
Content-Length 请求主体的大小(单位:字节)

3.请求体:请求体是POST请求特有的一个组成部分,存放请求参数,请求数据

总结:Request请求数据格式内容框架如下:

Response Headers请求数据格式说明

响应数据格式大致分为三个部分:响应行,响应头,响应体

1.响应行:响应数据的第一行,包含协议,状态码,描述(可能省略)三个部分。

状态码的作用是告诉客户端本次响应的状态,常见状态码有

200,请求成功。

201,已创建,成功请求并创建了新的资源。

202,已接受,已接受请求,但未处理完成。

301,永久重定向,请求的资源被永久移到新URL,今后任何新的请求都应使用新的URL代替。

302,暂时重定向,资源只是临时被移动,客户端仍使用原有的URL。

400,客户端请求的语法错误,服务器无法理解。

401,请求要求用户的身份认证。(英文描述:OK)

403,服务器理解客户端的请求,但是拒绝执行的请求。

404,服务器无法根据客户端的请求找到资源。

500,服务器内部错误,无法完成请求。

501,服务器不支持请求的功能,无法完成请求。

503,由于超载或系统维护,服务器暂时无法处理客户端的请求。

所有状态码及其详细信息可访问网站: 状态码大全

状态码分为5类,范围从100~500,状态码分类如下

1**:信息,服务器收到请求,需要请求者继续执行操作

2**:成功,操作被成功接收并处理

3**:重定向,需要进一步的操作以完成请求

4**:客户端错误,请求包含语法错误或无法完成请求

5**:服务器错误,服务器在处理请求的过程中发生了错误

2.响应头:同请求头一样,数据格式为“key:value"的格式,即"响应头:响应头值"的形式。

常见的响应头

响应头 响应头的值
Content-Type 表示响应内容的类型,例如txt/html,application/json。
Content-Length 表示该响应内容的长度(字节数)
Content-Encoding 表示该响应压缩算法,例如gzip
Cache-Control 指示客户端如何缓存,例如max-age=300表示最多缓存300秒
Set-Cookie 告诉浏览器为当前页面所在的域设置Cookie

3.响应体:响应数据格式的最后一行,存放响应数据,通常为CJSON格式

5.HTTP工作原理

在浏览器地址键入URL,工作流程如下:

    1. 浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址
    1. 解析出IP地址后,根据该IP地址和默认端口号80,与服务器建立TCP连接
    1. 浏览器发出HTTP请求给服务器
  • 4.服务器对浏览器请求做出响应,并把对应的html文本发送给浏览器

    1. 释放TCP连接
    1. 浏览器将该html文本显示出来

标签:Web,HTTP,浏览器,请求,协议,响应,数据格式,服务器
From: https://www.cnblogs.com/sillyfox/p/17880413.html

相关文章

  • Kali搭建DVWA过程(Web靶场)的问题总结
    一、kali安装谷歌拼音1.需要先获得root权限:通过su命令,输入密码2.获得权限后,安装输入法框架aptinstallfcitx3.安装Googel拼音输入法命令aptinstallfcitx-googlepinyin4.输入法安装完成后,搜索框打开Fcitx配置,将安装的Googel拼音输入法排序为第一位5.终端reboot重启,c......
  • 浏览器http请求正常文件头打印信息
    [12-0619:25:14.663][info][advanced_server.cpp:187handle_request()]totalrequestis:GET/index.htmlkHTTP/1.1Host:127.0.0.1:8081Connection:keep-aliveCache-Control:max-age=0sec-ch-ua:"GoogleChrome";v="119","Chromium"......
  • Socket.D 网络应用协议,首版发布!
    有用户说,“Socket.D之于Socket,尤如Vue之于Js、Mvc之于Http”主要特性基于事件,每个消息都可事件路由所谓语义,通过元信息进行语义描述流关联性,有相关的消息会串成一个流语言无关,使用二进制输传数据(支持tcp,ws,udp)。支持多语言、多平台断线重连,自动连接恢复多路复......
  • 构建一个语音转文字的WebApi服务
    构建一个语音转文字的WebApi服务简介由于业务需要,我们需要提供一个语音输入功能,以便更方便用户的使用,所以我们需要提供语音转文本的功能,下面我们将讲解使用Whisper将语音转换文本,并且封装成WebApi提供web服务给前端调用。创建项目第一步打开Vscode,选择一个目录作为工作空间,然......
  • 金蝶云星空使用webapi查询单据附件的主键
    业务需求:查询采购价目表的附件 详细操作 一、查询单据附件查看账套单据附件 查询采购价目表的单据内码和单据体内码SELECTa.FNUMBER,a.FID,b.FENTRYID,b.FSEQFROMt_PUR_PriceListaLEFTJOINt_PUR_PriceListEntrybONa.FID=b.FIDWHEREa.FNUMBER='CGJM......
  • 分享一套 MT4 crm MT4 MT5 CRM源码、web trade交易系统
    一套MT4MT5CRM源码,有跟单社区,同时支持MT4进行对接使用,支持代理返佣自由进行设置,可自动实时同步manager后台分组、交易品种和客户所有信息。包括带有内部实时内转功能,支持任何第三方支付、区块链和电子钱包。整套系统功能齐全。可节约公司大量租用成本和防止第三方公司泄露客户资......
  • Zookeeper——分布式一致性协议及Leader选举原理
    一、引言随着业务的增长,单体架构发展为分布式架构,大大提升了业务的处理能力,但同时也带来了很多单体架构不存在的问题,如:各节点之间网络通信的异常以及因其引起的脑裂问题(网络分区)。引出“三态”。在单体架构中只会存在“成功”或“失败”两种结果,但是在分布式架构中由于网络异......
  • Wireshark中的ARP协议包分析
    Wireshark可以跟踪网络协议的通讯过程,本节通过ARP协议,在了解Wireshark使用的基础上,重温ARP协议的通讯过程。ARP(AddressResolutionProtocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回......
  • rust webassembly 优化参考资料
    这几天在学习webassembly,尤其是cerboslite对于webassembly的支持,所以简单整理一些chatgpt给的一些建议WebAssembly(Wasm)的优化涉及多个方面,包括编译器优化、代码结构调整、资源管理和压缩等。以下是一些通用的WebAssembly优化策略:编译器优化:使用适当的编译器标志启用优......
  • Qt/C++视频监控拉流显示/各种rtsp/rtmp/http视频流/摄像头采集/视频监控回放/录像存储
    一、前言本视频播放组件陆陆续续写了6年多,一直在持续更新迭代,视频监控行业客户端软件开发首要需求就是拉流显示,比如给定一个rtsp视频流地址,你需要在软件上显示实时画面,其次就是录像保存,再次就是一些周边的处理比如贴OSD,做图片分析等。拉流显示是第一步,如果有跨平台的需求,个人推荐......