饥人谷技术博客

HTTP概述

2018-08-21  本文已影响1人  Liveup

HTTP

HTTP 是什么

HTTP 全称 Hype Text Transfer Protocol(超文本传输协议)


HTTP协议,指导客户端(浏览器)与服务器端如何进行沟通的一套标准、规范。

大致过程

浏览器负责发起请求 -> 而服务器端在80端口接收请求,负责返回内容(响应) -> 浏览器负责下载响应内容
衍生出老生常谈的面试题:地址栏中输入baidu.com,发生了什么(后续博客)

client-server

拓展:HTTP 随 WWW 而诞生

1989~1992年间,李爵士(Tim Berner-Lee)发明了万维网(简称WWW),其中主要包含三个概念:

  1. URI,俗称网址
  2. HTTP,两个电脑之间传输内容的协议
  3. HTML,超级文本,主要用来做页面跳转

URL的作用是让能你访问一个页面;HTTP的作用是让你能下载这个页面;HTML的作用是让你看懂这个页面。

请求

HTTP 其核心就是请求与响应,以及浏览器和服务器如何解析对应的请求与响应

示例

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.47.0
Accept: */*

POST / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.47.0
Accept: */*

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate, br
Cookie: BAIDUID=C5153FAEAC90600939DB9B25E945DB1C:FG=1
Connection: keep-alive
Upgrade-Insecure-Requests: 1

格式

1 方法 路径 协议/版本
2 key1: value1
2 key2: value2
2 key3: value3
3 
4 上传给服务器端的数据

响应

示例

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: Keep-Alive
Content-Length: 2381
Content-Type: text/html
Date: Tue, 21 Aug 2018 07:44:21 GMT
Etag: "588604dd-94d"
Last-Modified: Mon, 23 Jan 2017 13:27:57 GMT
Pragma: no-cache
Server: bfe/1.0.8.18
Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
 
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv后面太长,省略了……



HTTP/1.1 302 Found
Connection: Keep-Alive
Content-Length: 17931
Content-Type: text/html
Date: Tue, 21 Aug 2018 07:51:59 GMT
Etag: "54d9748e-460b"
Server: bfe/1.0.8.18

<html>
<head>
<meta http-equiv="content-type后面太长,省略了……

格式

1 协议/版本 状态码 状态说明
2 key1: value1
2 key2: value2
2 key3: value3
3
4 要下载的内容

常见状态码

状态码 含义
200 请求已成功,请求所希望的响应头或数据体将随此响应返
301 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一
302 请求的资源现在临时从不同的URI响应请求
304 服务器端检查到未改变,返回此响应,请使用缓存
400 请求上传内容错误,服务器无法接收
401 当前请求需要用户验证
403 服务器已经理解请求,但是拒绝执行它
404 请求资源未被在服务器上找到
405 请求的方法不能被用于请求相应的资源
415 请求被拒绝,因为当前请求的方法和所请求的资源、请求中上传的内容并不是服务器中支持的格式
500 服务器出错,一般是代码异常,导致了它无法完成对请求的处理
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应

发送及查看请求与响应

浏览器Chrome、Firefox

浏览器 -> 打开开发者工具(右键检查)-> 在地址栏中输入网址 -> 选中查看 Network或网络 标签页中的请求 -> 点击view resource(Request Headers或Response Headers右边)

用Chrome查看请求和响应
curl命令

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它是支持文件的上传和下载的综合传输工具,但习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、FTP等众多协议。

curl进行GET请求 curl进行POST请求
上一篇 下一篇

猜你喜欢

热点阅读