Comments (2)
网络基础知识
HTTP
一般我们都会说 “HTTP 是一个无状态的协议”,不过要注意这里的 HTTP 其实是指 HTTP 1.x,而所谓无状态协议,简单的理解就是即使同一个客户端连续两次发送请求给服务器,服务器也识别不出这是同一个客户端发送的请求,这导致的问题就比如你加了一个商品到购物车中,但因为识别不出是同一个客户端,你刷新下页面就没有了……
HTTPS 基础知识
Cookie
为了解决 HTTP 无状态导致的问题,后来出现了 Cookie。不过这样说可能会让你产生一些误解,首先无状态并不是不好,有优点,但也会导致一些问题。而 Cookie 的存在也不是为了解决通讯协议无状态的问题,只是为了解决客户端与服务端会话状态的问题,这个状态是指后端服务的状态而非通讯协议的状态。
Cookie 介绍
那我们来看下 Cookie,引用下维基百科:
Cookie(复数形态Cookies),类型为「小型文本文件」,指某些网站为了辨别用户身份而储存在用户本地终端上的数据。
作为一段一般不超过 4KB 的小型文本数据,它由一个名称(Name)、一个值(Value)和其它几个用于控制 Cookie 有效期、安全性、使用范围的可选属性组成,这些涉及的属性我们会在后面会介绍。
Cookie 的查看
我们可以在浏览器的开发者工具中查看到当前页面的 Cookie:
尽管我们在浏览器里查看到了 Cookie,这并不意味着 Cookie 文件只是存放在浏览器里的。实际上,Cookies 相关的内容还可以存在本地文件里,就比如说 Mac 下的 Chrome,存放目录就是 ~/Library/Application Support/Google/Chrome/Default
,里面会有一个名为 Cookies 的数据库文件,你可以使用 sqlite 软件打开它:
存放在本地的好处就在于即使你关闭了浏览器,Cookie 依然可以生效。
Cookie 的设置
那 Cookie 是怎么设置的呢?简单来说就是
- 客户端发送 HTTP 请求到服务器
- 当服务器收到 HTTP 请求时,在响应头里面添加一个 Set-Cookie 字段
- 浏览器收到响应后保存下 Cookie
- 之后对该服务器每一次请求中都通过 Cookie 字段将 Cookie 信息发送给服务器。
我们以 https://main.m.taobao.com/
为例来看下这个过程:
我们在请求返回的 Response Headers 可以看到 Set-Cookie 字段:
然后我们查看下 Cookie:
我们刷新一遍页面,再看下这个请求,可以在 Request Headers 看到 cookie 字段:
Cookies 的属性
在下面这张图里我们可以看到 Cookies 相关的一些属性:
web安全
浏览器缓存
参考链接
from fe-interview.
网络请求的基本过程
- 用户输入 url 地址,浏览器查询 DNS 查找对应的请求 IP 地址
- 建立 TCP 连接
- 浏览器向服务器发送 http 请求,如果服务器段返回以 301 之类的重定向,浏览器根据相应头中的 location 再次发送请求
- 服务器端接受请求,处理请求生成 html 代码,返回给浏览器,这时的 html 页面代码可能是经过压缩的
- 浏览器接收服务器响应结果,如果有压缩则首先进行解压处理,紧接着就是页面解析渲染
- 解析该过程分为:解析 HTML,构建 DOM 树,DOM 树与 CSS 样式进行附着构造呈现树,布局、绘制
from fe-interview.
Related Issues (20)
- 09. js原型及原型链 HOT 1
- 10. js中的基本类型和引用类型
- 11. webpack的作用及核心配置 HOT 10
- 12.闭包,new,箭头函数 HOT 1
- 13.获取对象属性的几种方法
- 14.解释下Promise与Promise.all HOT 1
- 15.JS中的面向对象,class,prototype和__proto__ HOT 1
- 16. mvc与mvvm的区别
- 17.前端性能优化的常用手段
- 19. Vue常见面试题 HOT 1
- 20.跨域及解决方案 HOT 2
- 21. Symbol的应用场景?
- 22.散装知识点 HOT 7
- 23.前端排序算法汇总 HOT 1
- 24. js实现二叉树的前序、中序、后续、层序遍历
- 25.前端常见算法 HOT 2
- 26. Set,Map,Symbol
- 27.html5语义化标签 HOT 1
- 28.常见css基础面试题
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fe-interview.