HTTP入门

基本概念

三个基本概念

  1. URI:统一资源资源标志符(Uniform Resource Identifier)
  2. HTTP:超文本传输协议(HyperText Transfer Protocal)
  3. HTML:超文本标记语言(HyperText Markup Language)

URI

URI是一个用于标识某一互联网资源名称的字符串,也就是由某个协议方案表示的资源的定位标识符。
URI常见的两种形式:

  • URN(Uniform Resource Name):用字符串标识某一互联网资源。ISBN: 9787115275790 就是一个 URN,通过 URN 你可以确定一个「唯一的」资源。
  • URL(Uniform Resource Locator):我们一般使用URL作为网址,表示资源的地址。https://www.baidu.com/s?wd=hello&rsv_spt=1#5 就是一个 URL,通过 URL 你可以确定一个「唯一的」地址(网址)。
    其包括:协议+登录信息(可选)+域名(服务器地址)+服务器端口号+路径+查询字符串+锚点(片段标识符):
    URL的常见组成

DNS

DNS(Domain Name System)域名系统,是一种负责域名解析协议,它提供域名到ip地址之间的解析服务。
使用命令行 nslookup baiducom 可以看到baidu.com的ip地址。
使用命令行ping baidu.com命令,可以查看该网址能否联通。

请求与响应

服务器与浏览器的交互

Server + Clilent + HTTP协议

  • 浏览器负责发起请求
  • 服务器在80端口接受内容
  • 服务器返回请求的内容

HTTP协议作用就是指导浏览器与服务器如何进行通信。

HTTP请求

请求主要由4部分组成:

POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
Content-Type: application/x-www-form-urlencoded
Content-Length: 10

请求的格式:

1 动词 路径 协议/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Content-Length: 10
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3
4 要上传的数据

  1. 第一部分
  • 动词POST是一种请求方法,常见的请求方法有:GET POST PUT PATCH DELETE HEAD OPTIONS 等。
  • 路径/,包括查询参数,但是不包括锚点。如果没有写路径则默认“/”。
  • HTTP/1.1指的发起请求遵循的协议与协议版本,目前主要使用HTTP协议。
  1. 第二部分:
    第二部分内容主要是以key:calue的形式。
  • Host: www.baidu.com表示请求的域名
  • User-Agent: curl/7.54.0表示发起请求使用的软件及版本号
  • Accept: */*表示接收所有
  • Content-Length: 10表示第四部分内容的长度
  • Content-Type: application/x-www-form-urlencoded标注第四部分内容的格式
  1. 第三部分则是一个空行,主要作用分开第二部分与第四部分。
  2. 第四部分则是需要上传的数据。

HTTP响应

响应是对请求做出的回应,其内容格式类似请求,也主要由4部分组成:

HTTP/1.1 302 Found
Connection: Keep-Alive
Content-Length: 17931
Content-Type: text/html
Date: Tue, 10 Oct 2017 09:19:47 GMT
Etag: "54d9749e-460b"
Server: bfe/1.0.8.18

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"> ……

响应格式:

1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容

  1. 第一部分示例:HTTP/1.1 200 OK
    200是一个状态码,表示响应的结果状态,后面对应的OK是状态解释。状态码以数字1、2、3、4、5开头,分为五种。
  2. 第二部分示例:
  • Connection: Keep-Alive
  • Content-Length: 17931响应第四部分内容的长度
  • Content-Type: text/html响应的内容格式
  • Date: Tue, 10 Oct 2017 09:19:47 GMT响应的时间
  • Etag: "54d9749e-460b"响应的标签
  • Server: bfe/1.0.8.18响应的服务器
  1. 第三部分依然是空行,分隔第二部分与第四部分
  2. 响应的内容,需要下载的内容

使用chrome查看请求与响应

  1. 打开「Network」
  2. 地址栏输入网址
  3. 打开开发者工具
  4. 在「Network」点击,查看 request,点击「view source」
  5. 点击「view source」
  6. 点击后可以看到请求的前三部分了
  7. 如果有请求的第四部分,那么在「FormData」或「Payload」里面可以看到

常见的HTTP状态码

  • 1xx Informational(信息性状态码) 接受的请求正在处理
  • 2xx Success(成功状态码) 请求正常处理完毕
    • 200 ok 表示响应成功,从客户端发来的请求在服务器被正常处理了。
    • 204 No Content 表示服务器接受的请求已成功处理,但没有资源返回。
    • 206 Partial Conyent 表示客户端进行了范围请求,服务器成功执行了这部分的GET请求。
  • 3xx Redirection(重定向状态码) 需要进行的附加操作以完成请求
    • 301 Moved Permanently 表示永久性重定向,请求的资源已经被分配到新的URI。
    • 302 Found 表示临时性重定向,请求的资源被分配了新的URI,希望用户此次使用新的URI访问。
    • 305 Use Proxy 表示被请求的资源必须通过指定代理才能被访问。
  • 4xx Client Error(客户端错误状态码) 服务器无法处理请求
    • 400 Bad Request 表示请求报文中存在语法错误。
    • 401 Unauthorized 表示发送的请求需要有通过HTTP认证的认证信息。
    • 403 Forbidden 表示队请求的资源的访问被服务器拒绝了。
    • 404 Not Found 服务器上无法找到请求的资源。
  • 5xx Server(服务器错误状态码) 服务器处理请求出错
    • 500 Internet Server Error 表示服务器在执行请求时发生错误。
    • 503 Service Unavailable 表示服务器处于超负载或正在进行停机维护。

使用curl命令发起请求

curl -s -v -H "Frank: xxx" -- "https://www.baidu.com"
使用该命令可以创造一个请求,请求访问百度。
curl -X POST -s -v -H "Frank: xxx" -- "https://www.baidu.com"
新增的-X POST表示请求的方法为POST,没有这个则默认GET。
curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"
新增的 -d "1234567890"d表示date数据,表示上传了引号中的数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358