简介:项目做好以后,需要让所有人都能访问到,项目放在本机电脑上是无用的,除非将项目上线。 上线就是将项目上传到远程服务器,大家就能访问了。 服务器:其实就是一台远程电脑。远程电脑不一定是服务器;需要开启特殊的服务 ==> 能被别人访问的服务。 这个服务如何开启?可以通过安装软件:nginx、tomcat、apache、。。。
因为软件也是代码写的,nodejs写的服务器也是用来开启这个服务的 我们访问别人的资源,用本地目录的打开方式是无法访问到的,所以必须使用http才能访问到。 http:全称 HyperText transfer protocol 译文是超文本传输协议。 协议:保障双方利益 哪双方:服务器和客户端 什么利益:传输超文本,给出去,能收到 协议内容分3部分:这3个步骤都是由客户端主动开始的 1、建立连接 双方在确保通信的基础:
我方:
我方是否可以发消息
我方是否可以收消息
对方是否可以收消息
对方是否可以发消息
对方: 我方是否可以发消息
我方是否可以收消息
对方是否可以收消息
对方是否可以发消息
演示图
2、开始通信
请求 ==> 请求报文 请求行 请求方式
标准的请求方式:
GET ==> 查
POST ==> 增
PUT ==> 改
DELETE ==> 删
请求路径:不是完整的路径,在完整路径中去掉协议域名端口号以后的路径 协议和版本
GET和POST的区别
-
数据传输方式:
- GET: 通过URL传递参数,在URL的末尾附加参数键值对(query string)的形式,例如
http://example.com/resource?param1=value1¶m2=value2
。因此,GET请求的数据会暴露在URL中,有长度限制(因为URL长度的限制),且不安全,适合传输少量非敏感信息。 - POST: 将参数放在请求体中传输,而不是在URL中。POST请求的数据不会暴露在URL上,可以传输大量数据,且相对安全,适合传输敏感信息或者大数据量。
- GET: 通过URL传递参数,在URL的末尾附加参数键值对(query string)的形式,例如
-
安全性:
- GET: 因为数据在URL中可见,所以不适合传输敏感信息,如密码等。
- POST: 数据在请求体中,相对安全,适合传输敏感信息。
-
幂等性:
- GET: 通常是幂等的,多次请求同一个URL返回的结果应该是相同的(除非中间有改变)。
- POST: 不是严格意义上的幂等,多次POST请求可能会有不同的副作用,例如重复提交订单等。
-
数据长度限制:
- GET: 由于数据在URL中传输,长度有限制(依赖于浏览器和服务器),通常不超过2048个字符。
- POST: 没有长度限制,但是受服务器配置的影响,可以传输大量数据。
-
缓存机制:
- GET: 可以被缓存,因为GET请求的参数和URL在浏览器历史记录中留下痕迹。
- POST: 通常不会被缓存,因为POST请求的参数不会保存在浏览器历史记录中。
-
使用场景:
- GET: 适合用于获取数据,如搜索、查询等操作,因为它可以被书签保存和缓存。
- POST: 适合用于提交数据,如表单提交、文件上传等操作,因为它可以传输更多数据且相对安全。
响应
响应行 :
协议和版本
响应状态码
响应的状态描述
- 标准状态码:
- 1xx:信息类
- 2xx:成功类
- 3xx:重定向类
- 4xx:客户端错误类
- 5xx:服务器错误类
- 常见状态码:
- 200:ok
- 304:内容是从缓存中来的
- 302:临时重定向
- 301:永久重定向
- 401:身份或权限验证失败(token出问题的时候)
- 403:没有权限访问
- 404:已经访问到目标服务器了,但是目标服务器中没有这个地址的响应,客户端写错地址了
- 405:请求方法不对
- 500:服务器内部错误
- 502:网关错误
- 504:网关超时
响应头
- 常见的响应头
// cors的响应头
Access-Control-Allow-Origin: '*/指定的白名单ip'
// 还有缓存相关的响应头: expires eTag if-since....
- 响应主体
- 断开连接:4次挥手
http是无状态协议,每次通信之间是完全没有关联的。