本文主要经过HTTP 报文,讲解HTTP Header,Methods,status codejavascript
HTTP基于TCP协议实现,TCP是一条双向通信通道,HTTP在TCP的基础上规定了Request->Response的模式;也就是说:必须由浏览器首先发起请求,服务器才会响应。css
HTTP是一个纯粹的文本协议,它规定了使用TCP协议来传输文本格式的一个应用协议,具体能够参考一下计算机网络的五层协议。html
URL:统一资源定位符——定位到位置 如:www.baidu.com/前端
URI:统一资源标记符——定位到名字 如:www.baidu.com/index.html URI = URL (www.baidu.com/) + URN (index.html)java
http通讯中,必须由客服端发起请求,服务端才能响应。nginx
method -> 请求方式「GET POST OPTIONS ...」json
path -> 获取资源的路径跨域
version -> 请求版本 「HTTP的协议版本号」浏览器
headers -> 头部 「cookies...」缓存
body -> 请求主体 「主要提交的一些数据」
version -> 响应协议版本号
status -> 状态码「200 404 403... 用来反馈请求的成功失败已经缘由」
headers -> 头部跟请求头相似 「cookies...」
body -> 响应的一些资源信息
http method定义了咱们请求但愿执行的操做类型,主要有如下几种:
GET get「获取」是一种最经常使用的请求方式,通常用来直接通URI访问来获取资源。譬如:获取html代码,图片,JSON等资源
POST post「提交」也是一个更经常使用的方式,主要用来提交表单信息给后台存储修改验证。譬如:提交用户名与密码验证身份
HEAD 跟get相同,不过只返回请求头多数由 JavaScript 发起
PUT && DELETE 添加跟删除资源
CONNECT 用于 HTTPS和 WebSocket
OPTIONS && TRACE 用于预请求和调试,后面会讲到
这部分很重要,在开发调试中,每每须要根据状态码判断bug出现的缘由,下面挑几个重要的讲一下:
用处不大
200 OK 请求成功
201 Created 建立成功 -> 通常是在发送PUT「添加」请求后的响应
202 Accepted 请求已收到 -> 你的请求我已经收到了但我不还不想处理 ...
301 Moved Premanently 资源已经永久转移了
302 Found 临时从其余URI 响应信息
304 Not Modified 本地有缓存版本而且没有过时
这些状态主要是客户端发送的请求不符合服务端的规格要求,返回的状态信息
400 Bad Request 错误请求 -> 这个请求我不知道你在说什么
401 Unathorized 未受权 -> 这个请求你须要提交用户验证信息「Authorization」
403 Forbidden 请求是对但拒绝执行,具体缘由不知「傲娇脸」
404 Not Found 请求的资源不存在
405 Method Not Allowed 请求方式拒绝 -> 这个请求方式「如:post」不容许
这些状态主要是服务端本身发生错误
500 Internal Server Error 服务端错误 -> 服务端出错具体缘由不清楚
502 Bad Gateway 网关出错
503 Service Unavailable 服务器挂了
504 Gateway Timeout 响应超时了
505 HTTP Version Not Supported 你这个请求协议我不支持啊
有一次业务上线后测试工程师告诉我网页打开太慢了,查看了network后发现打包库好几M,可是用本地编译测试没有也就几百K而已。后来经过查询content-encoding发现线上nginx没有配置gzip压缩
当发生405错误的时候,能够查询服务器容许你请求的方式有哪些
当发生跨域的时候,通常是这个没有设置
通常在返回401的时候,就是没有设置这个
格式:type/subtype 「类型」/「子类型」
text/plain「未知可直接展现」, text/html, text/css, text/javascript, text/xml
image:图像 ...
audio:音频 ...
video:视频 ...
applcation: 二进制数据 常见 application/json 表示数据是json格式的
对于text文件类型若没有特定的subtype,就使用 text/plain。相似的,二进制文件没有特定或已知的 subtype,即便用 application/octet-stream。
Multipart 类型表示细分领域的文件类型的种类,常常对应不一样的 MIME 类型
multipart/form-data: 通常用来文件直接经过HTML Forms的POST提交
咱们使用 html 的 form 标签提交产生的 html提交的时候,默认产生application/x-www-form-urlencoded,当有文件的时候使用multipart/form-data