关于http前端存储的总结

本篇文章分享给大家的内容是关于http前端存储的总结,内容很详细,接下来我们就来看看具体的内容,希望可以帮助到有需要的朋友。

cookie

为什么会有cookie

http协议的无状态,所谓无状态即是服务器并不是知道这次的请求和上次的请求是不是同一个client发来的,就好比你经常去一家超市买东西,老板并不记得你是谁。但是如果你每次带着你的会员卡过来,那么老板就可以识别出你是谁了,cookie的作用类似于会员卡起的作用。

大概流程

当服务器收到HTTP请求时,服务器可以在响应头里面添加一个Set-Cookie选项。浏览器收到响应后通常会保存下Cookie,之后对该服务器每一次请求中都通过Cookie请求头部将Cookie信息发送给服务器。另外,Cookie的过期时间、域、路径、有效期、适用站点都可以根据需要来指定。

当然了,浏览器端也可以操作cookie,document.cookie可以获取当前页面的所有cookie。

细节

domain、path

这两个属性决定了cookie是否会被发往哪些URL

Domain 标识指定了哪些主机可以接受Cookie。如果不指定,默认为当前文档的主机(不包含子域名)。如果指定了Domain,则一般包含子域名。

立即学习“前端免费学习笔记(深入)”;

例如,如果设置 Domain=mozilla.org,则Cookie也包含在子域名中(如developer.mozilla.org)。

Path 标识指定了主机下的哪些路径可以接受Cookie(该URL路径必须存在于请求URL中)。以字符 %x2F (“/”) 作为路径分隔符,子路径也会被匹配。

例如domain=qq.com,path=/blog,则该cookie会被发往:

qq.com/blog

wx.qq.com/blog

wx.qq.com/blog/aa

….

expires、max-age

这两个属性决定了cookie在浏览器保存多久

具体的细节为:

Expires 为 Cookie 的删除设置一个过期的日期

Max-age 设置一个 Cookie 将要过期的秒数

IE 浏览器(ie6、ie7 和 ie8) 不支持 max-age,所有的浏览器都支持 expires

如果同时设置了expires和max-age,那么支持max-age的浏览器会忽略expires的值,不支持max-age的浏览器会忽略max-age只支持expires

如果expires和max-age都不设置,该cookie会成为一个session cookie,即关闭浏览器的时候会被自动删除

secure和httpOnly

标记为 Secure 的Cookie只应通过被HTTPS协议加密过的请求发送给服务端。但即便设置了 Secure 标记,敏感信息也不应该通过Cookie传输,因为Cookie有其固有的不安全性,Secure 标记也无法提供确实的安全保障。从 Chrome 52 和 Firefox 52 开始,不安全的站点(http:)无法使用Cookie的 Secure 标记

为避免跨域脚本 (XSS) 攻击,通过JavaScript的 Document.cookie API无法访问带有 HttpOnly 标记的Cookie,它们只应该发送给服务端。如果包含服务端 Session 信息的 Cookie 不想被客户端 JavaScript 脚本调用,那么就应该为其设置 HttpOnly 标记。

如何设置cookie

服务端

服务端set-cookie即可

如下图是GitHub的设置cookie

1295247318-5b588331848a4_articlex.png

浏览器

直接在JavaScript里操作即可:

document.cookie=”age=12; expires=Thu, 26 Feb 2116 11:50:25 GMT; domain=github.com; path=/”;

如何修改cookie

修改一个cookie时,要保证name-domain-path一致,否则不会修改旧值,而是添加了一个新的 cookie。

如何删除cookie

保证name-domain-path一致,并且把expires设置为一个过去的时间点

sessionStorage

使用

setItem(key, val);

getItem(key)

1837270637-5b58833157e10_articlex.png

3609607081-5b588331530cd_articlex.png

细节

只有设置sessionStorage的当前域才能使用

只有页面刷新才不会清除掉sessionStorage。剩下的均会清理掉sessionStorage(比如打开新的tab、关掉当前tab再新开一个tab,更别提关闭浏览器了)

localStorage

使用

setItem(key, val);

getItem(key)

398150574-5b5883317bc39_articlex.png

2969608172-5b5883313927c_articlex.png

细节

只有设置localStorage的当前域才能使用,但是新开的tab还可以使用且关闭浏览器重新打开还在

用户不主动删除的话会一直存储下去

大小为4M

localStorage可以存储k-v形式的数据。存储的值需要是字符串类型,没法直接存储对象,但是可以将对象序列化为字符串再存入。如果强行存入object的话,就会被调用object.toString从而悲剧,正确的方法应该是JSON.stringify

websql

Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。

使用

3个核心方法:

openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。

transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。

executeSql:这个方法用于执行实际的 SQL 查询。

相关推荐:

HTML中元信息meta标记属性的分析(附代码)

如何动态生成html元素以及为元素追加属性的方法介绍(附代码)

以上就是关于http前端存储的总结的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2833146.html

(0)
上一篇 2025年3月9日 04:19:09
下一篇 2025年3月9日 04:19:15

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 前端进行文件上传的各种方法总结(代码)

    这篇文章给大家介绍的文章内容是关于前端进行文件上传的各种方法总结(代码),有很好的参考价值,希望可以帮助到有需要的朋友。 一、通过Form表单提交上传 HTML  enctype属性必不可少 登录后复制 上面一种方法通过表单自有属性进行提交…

    编程技术 2025年3月9日
    200
  • 一个完整的HTML对象是什么样的,如何生成?

    对html对象,首先要先提到node节点,node是一个接口,许多dom类型从这个接口继承,并允许类似地处理(或测试)这些各种类型。有那些接口重node继承其方法和属性?先看看本文章吧。apache php mysql 为何写这篇文章? 你…

    编程技术 2025年3月9日
    200
  • 瀑布流布局实现的代码

    这篇文章给大家介绍的内容是关于瀑布流布局实现的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 index.html nbsp;html>waterfall layout                      …

    编程技术 2025年3月9日
    200
  • HTML表单的工作原理(图文)

    本篇文章给大家带来的内容是关于html表单的工作原理(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在前端语言书写中,表单是一种常用的数据传递方式,也是一种行之有效的比较高效率的方式。 其工作原理 为:访问一个包含…

    2025年3月9日 编程技术
    200
  • React中跨组件分发状态的三种方法介绍

    这篇文章给大家介绍的内容是关于react中跨组件分发状态的三种方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 当我问自己第一百次时,我正在研究一个典型的CRUD屏幕:“我应该将状态保留在这个组件中还是将其移动到父组…

    2025年3月9日
    200
  • HTML对象:html一些对象属性的介绍

    这篇文章给大家分享的内容是关于html对象:html一些对象属性的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Form 对象 Form 对象方法 reset() :把表单的所有输入元素重置为它们的默认值。 subm…

    编程技术 2025年3月9日
    200
  • 浏览器内核以及浏览器兼容的问题分析

    本篇文章给大家带来的内容是关于浏览器内核以及浏览器兼容的问题分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 一、浏览器内核  Rendering Engine,中文翻译过来名称很多,排版引擎、解释引擎、渲染引擎,现在流…

    编程技术 2025年3月9日
    200
  • 详谈HTML中script标签(附代码)

    本篇文章给大家带来的内容是关于详谈html中script标签(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 script 元素 在 HTML 页面中使用「Javascript」语言主要的方法就是使用 script…

    编程技术 2025年3月9日
    200
  • 图片懒加载是什么意思?图片懒加载的实现方法

    本篇文章给大家带来的内容是关于图片懒加载是什么意思?图片懒加载的实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 所谓懒加载,是为了提高网页的打开的速度,获得更好用户体验的一种手段。其选择的重要的部分先加载,次要的部…

    2025年3月9日
    200
  • 浏览器中5种常用的事件解析

    本篇文章给大家带来的内容是关于浏览器中常用的事件解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 表单事件 键盘事件 当 , 的值发生变化时触发。此外,打开 contenteditable 属性的元素,只要值发生变化,也…

    编程技术 2025年3月9日
    200

发表回复

登录后才能评论