http是超文本传输协议
,是一个简单的请求-响应协议
请求方式 | 描述 |
---|---|
get | 1. 用来获取数据,对应select操作,不对服务器的数据进行增、删、改等操作; 2.get会把请求的参数附加到url后面,这样是不安全的; 3. HTTP协议并没有限制get请求的URL大小,但是不同的浏览器对其有不同的大小长度限制 |
post | 1. 数据发送到服务器以创建或更新资源,侧重于更新数据,对应update; 2.post请求的请求参数都是请求body中操作 |
put | 数据发送到服务器以创建或更新资源,侧重于创建数据,对应insert操作 |
delete | 用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容,对应delete操作 |
options | 用来描述了目标资源的通信选项,返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性 |
head | HEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。 |
connect | 用来建立到给定URI标识的服务器的隧道;它通过简单的TCP / IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信 |
trace | TRACE方法用于沿着目标资源的路径执行消息环回测试;它回应收到的请求,以便客户可以看到中间服务器进行了哪些(假设任何)进度或增量。 |
浏览器输入一个URL回车后,会发生什么呢?
域名解析
,将地址解析成ip地址;建立连接
;发起http请求
;响应http请求
,浏览器得到响应结果解析响应结果
,若遇到资源文件,再次发起请求渲染展示
;断开连接
状态码 | 含义 |
---|---|
2xx | 表示访问成功 ,正常状态,一般接口正常都是返回此状态 |
200 | ok 一般用于get与post请求 |
3xx | 重定向 |
301 | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
303 | 表示必须临时重定向,查看其它地址。与301类似。使用GET和POST请求查看 |
304 | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,,这样可以减少网络开销。 |
4xx | 客户端错误 |
401 | 用户未提供身份验证凭据,或者没有通过身份验证。例如:验证码错误/账号密码错误/没有携带Token |
403 | 表示没有权限,服务器拒绝访问请求。 |
404 | Not Found 这是最常见的错误,表示找不到系统资源,但是只是暂时性地,一个好记忆的点:找不到对象; |
5xx | 服务器错误 |
500 | 表示服务器程序错误,一个通用的错误信息。 |
502 | 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。一般是架构网关层问题 |
503 | 表示服务器繁忙,或者服务器负载,通常这只是一个临时状态。 |
get产生一个TCP数据包;post产生两个TCP数据包。
get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。建议
请求头 | 描述 |
---|---|
Accept | 浏览器能够处理的内容类型 |
Accept-Charset | 浏览器能够显示的字符集 |
Accept-Encoding | 浏览器能够处理的压缩编码 |
Accept-Language | 浏览器当前设置的语言 |
Connection | 浏览器与服务器之间连接的类型 |
Cookie | 当前页面设置的任何Cookie |
Host | 发出请求的页面所在的域 |
Referer | 发出请求的页面的URL |
User-Agent | 浏览器的用户代理字符串 |
响应头 | 描述 |
---|---|
Date | 表示消息发送的时间,时间的描述格式由rfc822定义 |
server | 服务器名称 |
Connection | 控制HTTP缓存 |
content-type | 表示后面的文档属于什么MIME类型 |
属性值 | 作用 |
---|---|
application/x-www-form-urlencoded | 浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。该种方式提交的数据放在 body 里面,数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL转码。 |
multipart/form-data: | 该种方式也是一个常见的 POST 提交方式,通常表单上传文件时使用该种方式。 |
application/json: | 服务器消息主体是序列化后的 JSON 字符串。 |
text/xml | 该种方式主要用来提交 XML 格式的数据。 |