网络方面的知识实在是太难了,嘤嘤~
1.状态码
2XX:成功
.200 ok 请求被正确处理
.204 No content 请求成功,没有返回资源
.205 reset content 请求成功,但是响应报文不包含实体部分,且要求请求方重置内容
.206 Partial content 范围请求
3XX:重定向
.301 永久性重定向
.302 临时性重定向
.303 资源存在另一个URL
.304 服务器允许访问资源,请求未满足条件
.307 临时性重定向,但是希望客户端保持请求方法不变向新的地址发出请求
4XX:客户端报错
.400 请求的报文存在语法错误
.401 未通过验证
.403 服务器拒绝资源被访问
.404 服务器上资源没找到
5XX:服务器报错
.500 服务器执行请求发生错误
.501 服务器不支持当前请求所需要的某个功能
.502 网关错误
.503 服务器超负荷或者停机
2.http和https
3.get和post的区别
get 多用于 无副作用和 幂等场景
post 多用于 副作用和不 幂等场景
从技术上来说:
Get
- GET请求的数据会附加在URL之后,用问号分割,多个参数用&进行连接。
- GET请求的数据会暴露在地址栏中。
- GET请求URL的编码格式采用的是ASCII编码,而不是Unicode编码。
- GET请求传输大小有限制,大小在2KB。
- GET相对安全性较差,会被浏览器主动缓存。
- GET浏览器回退无害。
POST
- POST请求会把数据放置在HTTP请求包的包体中,不会直接暴露给用户。
- POST请求,理论上大小是不会限制的,但是实际上各个服务器会规定POST提交数据大小。
- POST相对Get更安全,因为参数不会被浏览器缓存或者是保存在aweb服务器日志中。
- POST浏览器回退重新请求。
4.输入url
- 服务器DNS解析url获取IP地址
- 客户端向服务端发起TCP连接
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束。
5.跨域,解决跨域
- 域名协议端口,有一个不同就是跨域
- 浏览器利用同源机制阻止跨站攻击
解决跨域:
1.利用表单提交请求实现跨域
<form action ="www.baidu.com">
</form>
2.JSONP实现跨域,利用标签不受同源机制限制。
-
jsonp的跨域原理是通过在html中动态添加script标签,返回的数据包括函数调用,实现跨域,原生代码如下:
#www.taobao.com下的一个html <script> var script = document.creatElement('script'); script.type = 'text/javascript'; script.src = 'http://www.baidu.com/getdata?callback=demo'; #返回的字符串为demo({msg: 'helloworld'}),解析后执行demo函数 function demo(res){ console.log(res.msg); } </script>
3.CORS,后端配置允许跨域
var express=require('express');
var url=require('url');
var app=express();
var allowCrossDomain = function(req, res, next) {
#设置cors
res.header('Access-Control-Allow-Origin', 'http://localhost:63342');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header('Access-Control-Allow-Credentials','true');
next();
};
app.use(allowCrossDomain);
app.get('/getData',function (req,res,next) {
var queryValue=url.parse(req.url).query;
if(queryValue==='fortunewheel@sina.com'){
res.send(true);
}else {
res.send(false);
}
});
app.listen(3001);
4.nigix反向代理(常用)
server{
# 监听8080端口
listen 8080;
# 域名是localhost
server_name localhost;
#凡是localhost:8080/api这个样子的,都转发到真正的服务端地址http://www.baidu.com:8080
location ^~ /api {
proxy_pass http://www.baidu.com:8080;
}
}
6.浏览器储存
- cookies:Cookie 的作用就是告诉服务器请求来自于谁,那么最主要的作用就是保持用户登陆态(记住密码),除此之外还可以记录用户浏览数据,进行广告推送和前文提到的购物车等。
- sessionStorage:sessionStorage更适合用来存储生命周期和它同步的会话级别的信息。这些信息只适用于当前会话,比如可以用来做表单数据的持久化,防止刷新后表单数据丢失。比如微博的 sessionStorage就主要是存储你本次会话的浏览足迹
- localStorage:LocalStorage适合用来做本地缓存,可以提高首屏加载速度。一些图片等不会经常改变的大资源也可以缓存下来,减少网络请求。
- IndexDB