mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-28 07:14:05 -06:00
78 lines
3.0 KiB
Markdown
78 lines
3.0 KiB
Markdown
---
|
||
title: HTTP Brief Introduction
|
||
tags:
|
||
- web
|
||
- http
|
||
date: 2024-03-07
|
||
---
|
||
HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。
|
||
|
||
## Learn HTTP by devTool
|
||
|
||

|
||
|
||
* `Elements`显示网页的结构
|
||
* `Network`显示浏览器和服务器的通信
|
||
* `Console` 用于debug的控制台,debug JS的运行
|
||
|
||

|
||
|
||
|
||
可以看出来,浏览器发送给谷歌服务器`GET`的请求。
|
||
|
||
`GET`表示一个读取请求,将从服务器获得网页数据,`/`表示URL的路径,URL总是以`/`开头,`/`就表示首页
|
||
|
||
|
||
HTTP响应分为Header和Body两部分(Body是可选项),我们在`Network`中看到的Header最重要的几行如下:
|
||
|
||
```
|
||
200 OK
|
||
```
|
||
|
||
`200`表示一个成功的响应,后面的`OK`是说明。失败的响应有`404 Not Found`:网页不存在,`500 Internal Server Error`:服务器内部出错,等等。
|
||
|
||
```
|
||
Content-Type: text/html
|
||
```
|
||
|
||
`Content-Type`指示响应的内容,这里是`text/html`表示HTML网页。请注意,浏览器就是依靠`Content-Type`来判断响应的内容是网页还是图片,是视频还是音乐。浏览器并不靠URL来判断响应的内容,所以,即使URL是`http://example.com/abc.jpg`,它也不一定就是图片。
|
||
|
||
HTTP响应的**Body就是HTML源码**
|
||
|
||
HTTP请求的流程:
|
||
|
||
> [!abstract]
|
||
> 步骤1:浏览器首先向服务器发送HTTP请求,请求包括:
|
||
>
|
||
> 方法:`GET`还是`POST`,`GET`仅请求资源,`POST`会附带用户数据;
|
||
>
|
||
> 路径:`/full/url/path`;
|
||
>
|
||
> 域名:由Host头指定:`Host: www.sina.com.cn`
|
||
>
|
||
> 以及其他相关的Header;
|
||
>
|
||
> 如果是POST,那么请求还包括一个Body,包含用户数据。
|
||
|
||
|
||
> [!abstract]
|
||
> 步骤2:服务器向浏览器返回HTTP响应,响应包括:
|
||
>
|
||
> 响应代码:`200`表示成功,`3xx`表示重定向,`4xx`表示客户端发送的请求有错误,`5xx`表示服务器端处理时发生了错误;
|
||
>
|
||
> 响应类型:由`Content-Type`指定,例如:`Content-Type: text/html;charset=utf-8`表示响应类型是HTML文本,并且编码是`UTF-8`,`Content-Type: image/jpeg`表示响应类型是JPEG格式的图片;
|
||
>
|
||
> 以及其他相关的Header;
|
||
>
|
||
> 通常服务器的HTTP响应会携带内容,也就是有一个Body,包含响应的内容,网页的HTML源码就在Body中。
|
||
|
||
> [!abstract]
|
||
> 步骤3:如果浏览器还需要继续向服务器请求其他资源,比如图片,就再次发出HTTP请求,重复步骤1、2。
|
||
|
||
|
||
Web采用的HTTP协议采用了非常简单的请求-响应模式,从而大大简化了开发。当我们编写一个页面时,我们只需要在HTTP响应中把HTML发送出去,不需要考虑如何附带图片、视频等,浏览器如果需要请求图片和视频,它会发送另一个HTTP请求,因此,一个HTTP请求只处理一个资源。
|
||
|
||
# Reference
|
||
|
||
|
||
* https://www.liaoxuefeng.com/wiki/1016959663602400/1017804782304672 |