网络

262 阅读4分钟

网络方面的知识实在是太难了,嘤嘤~

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

(juejin.cn/post/684490…)

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报文
  • 浏览器解析渲染页面
  • 连接结束。

参考:juejin.cn/post/684490…

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

参考:juejin.cn/post/684490…

7.浏览器缓存机制

8.浏览器渲染原理

9.详说tcp和udp的区别

10.三次握手和四次挥手