博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识HTTP
阅读量:6230 次
发布时间:2019-06-22

本文共 3524 字,大约阅读时间需要 11 分钟。

与www有关的三个名词

1.URI

概念:统一资源标识符,俗称网址 。URI分为URN和URL,通常使用URL,如下图:

作用:访问页面

2.HTTP

概念:两个电脑之间传输内容的协议

作用:下载页面

3.HTML

概念:超级文本,主要用来做页面跳转

作用:观看页面

域名

以www.baidu.com为例:

.com——顶级域名,一级域名

baidu——二级域名

www——三级域名

大多数工程师忽略一级域名,将二级域名成为一级域名,依次类推

DNS

域名系统,输入域名即可输出ip

如下图查询百度ip

服务器与浏览器的交互

1.浏览器负责发起请求

2.服务器在 80 端口接收请求

3.服务器负责返回内容(响应)

4.浏览器负责下载响应内容

HTTP 的作用就是指导浏览器和服务器如何进行沟通。

HTTP请求

请求示例1

curl -s -v -H "Frank: xxx" -- "https://www.baidu.com"复制代码

请求的内容

GET / HTTP/1.1Host: www.baidu.comUser-Agent: curl/7.54.0Accept: */*Frank: xxx //可无视复制代码

请求示例2

curl -X POST -s -v -H "Frank: xxx" -- "https://www.baidu.com"复制代码

请求的内容

POST / HTTP/1.1Host: www.baidu.comUser-Agent: curl/7.54.0Accept: */*Frank: xxx  //可无视复制代码

请求示例3

curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"复制代码

请求的内容

POST / HTTP/1.1Host: www.baidu.comUser-Agent: curl/7.54.0Accept: */*Frank: xxxContent-Length: 10Content-Type: application/x-www-form-urlencoded1234567890复制代码

请求的格式

1 动词 路径 协议/版本2 Key1: value12 Key2: value22 Key3: value32 Content-Type: application/x-www-form-urlencoded2 Host: www.baidu.com2 User-Agent: curl/7.54.03 4 要上传的数据复制代码

1.请求最多包含四部分,最少包含三部分。(也就是说第四部分可以为空)2.第三部分永远都是一个回车(\n)3.动词有 GET POST PUT PATCH DELETE HEAD OPTIONS 等4.这里的路径包括「查询参数」,但不包括「锚点」5.如果你没有写路径,那么路径默认为 /6第 2 部分中的 Content-Type 标注了第 4 部分的格式复制代码

HTTP请求动词

GET : 用于从服务器获取资源信息完成请求后返回状态码 200 OKPOST : 用于创建新资源(上传、登录)创建完成后返回状态码 201 CreatedPUT : 用于完整的替换资源或者创建指定身份的资源(整体更新)如果是创建了资源,则返回 201 Created如果是替换了资源,则返回 200 OKPATCH : 用于局部更新资源(部分更新)完成请求后返回状态码 200 OKHEAD : 用于只获取请求某个资源返回的头信息DELETE : 用于删除某个资源完成请求后返回状态码 204 No ContentOPTION : 用于获取资源支持的所有 HTTP 方法复制代码

用 Chrome 发请求

1.打开 Network2.地址栏输入网址3.在 Network 点击,查看 request,点击「view source」4.点击「view source」,可以看到请求的前三部分5.如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到复制代码

HTTP响应

有请求必有响应,上述请求1、请求2的响应如下:

响应示例1

响应内容

HTTP/1.1 200 OKAccept-Ranges: bytesCache-Control: private, no-cache, no-store, proxy-revalidate, no-transformConnection: Keep-AliveContent-Length: 2443Content-Type: text/htmlDate: Tue, 10 Oct 2017 09:14:05 GMTEtag: "5886041d-98b"Last-Modified: Mon, 23 Jan 2017 13:24:45 GMTPragma: no-cacheServer: bfe/1.0.8.18Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
……复制代码

响应示例2

响应内容

HTTP/1.1 302 FoundConnection: Keep-AliveContent-Length: 17931Content-Type: text/htmlDate: Tue, 10 Oct 2017 09:19:47 GMTEtag: "54d9749e-460b"Server: bfe/1.0.8.18
……复制代码

响应的格式

1 协议/版本号 状态码 状态解释2 Key1: value12 Key2: value22 Content-Length: 179312 Content-Type: text/html34 要下载的内容复制代码
状态码是服务器对浏览器说的话第 2 部分中的 Content-Type 标注了第 4 部分的格式第 2 部分中的 Content-Type 遵循 MIME 规范复制代码

HTTP状态码

请求成功200 : 求执行成功并返回相应数据201 : 创建成功并返回相应资源数据202 : 接受请求,但无法立即完成创建行为204 : 请求执行成功,不返回相应资源数据复制代码
重定向301 : 被请求的资源已永久移动到新位置302 : 请求的资源现在临时从不同的 URI 响应请求303 : 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该使用 GET 方法进行请求307 : 对应当前请求的响应可以在另一个 URI 上被找到,客户端应该保持原有的请求方法进行请求复制代码
条件请求304 : 资源自从上次请求后没有再次发生变化,主要使用场景在于实现数据缓存409 : 请求操作和资源的当前状态存在冲突。主要使用场景在于实现并发控制412 : 服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个。主要使用场景在于实现并发控制复制代码
客户端错误400 : 请求体包含语法错误401 : 需要验证用户身份403 : 服务器拒绝执行404 : 找不到目标资源405 : 不允许执行目标方法,响应中应该带有 Allow 头,内容为对该资源有效的 HTTP 方法406 : 服务器不支持客户端请求的内容格式410 : 被请求的资源已被删除413 : POST 或者 PUT 请求的消息实体过大415 : 服务器不支持请求中提交的数据的格式422 : 请求格式正确,但是由于含有语义错误,无法响应428 : 要求先决条件,如果想要请求能成功必须满足一些预设的条件要求先决条件,如果想要请求能成功必须满足一些预设的条件复制代码
服务端错误500 : 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理502 : 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应501 : 服务器不支持当前请求所需要的某个功能503 : 由于临时的服务器维护或者过载,服务器当前无法处理请求复制代码

注:请求失败时,仍存在响应第四部分。响应第四部分只与请求第二部分有关,与状态码无关

参考资料 链接:https://my.oschina.net/upcyan/blog/916959

转载于:https://juejin.im/post/5a3930be6fb9a044fc44de86

你可能感兴趣的文章
动态规划-最优二叉搜索树-公式推导
查看>>
jquery获取前一个月日期
查看>>
R12.2常用手册
查看>>
【全网最全的博客美化系列教程】01.添加Github项目链接
查看>>
[微信小程序] 通过快速启动demo分析小程序入门关键点
查看>>
C# 封装miniblink 使用HTML/CSS/JS来构建.Net 应用程序界面和简易浏览器
查看>>
SQL Server管理员必备技能之性能优化
查看>>
组合拳出击-Self型XSS变废为宝
查看>>
服务网与各地落地平台的调用关系
查看>>
使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!...
查看>>
13个在企业中持上升势头的开源编程工具
查看>>
sql server 2005附加数据库错误:尝试打开或创建物理文件时,CREATE FILE 遇到操作系统错误...
查看>>
彻底搞定C指针-函数名与函数指针
查看>>
win7快速启动栏
查看>>
一个网络项目招标书,大神们会几个?
查看>>
基于x86和JVM浅谈32bit与64bit的区别
查看>>
NSPredicate笔记
查看>>
cocos2d里面如何实现mvc
查看>>
unicode解码小工具
查看>>
Excel电子表格中如何做数据查找,重复数据删除,标记重复数据
查看>>