我想在HTML5中存储JavaScript对象localStorage,但我的对象显然正在转换为字符串.
我可以使用存储和检索原始JavaScript类型和数组localStorage,但对象似乎不起作用.他们应该吗?
这是我的代码:
var testObject = { 'one': 1, 'two': 2, 'three': 3 };
console.log('typeof testObject: ' + typeof testObject);
console.log('testObject properties:');
for (var prop in testObject) {
console.log(' ' + prop + ': ' + testObject[prop]);
}
// Put the object into storage
localStorage.setItem('testObject', testObject);
// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ' + retrievedObject);
Run Code Online (Sandbox Code Playgroud)
控制台输出是
typeof testObject: object
testObject properties:
one: 1 …Run Code Online (Sandbox Code Playgroud) 除了非持久性和仅限于当前窗口的范围之外,对本地存储的会话存储有任何好处(性能,数据访问等)吗?
我在我的网站中有一些值,我希望在浏览器关闭时清除,我选择sessionStorage来存储该值,当选项卡关闭时清除它并在用户按f5时保持存储,但如果用户在不同的选项卡中打开一些链接这个值不可用.我如何在我的应用程序之间共享所有浏览器选项卡之间的sessionStorage值?
用例:将值放在某个存储中,在所有浏览器选项卡中保持该值可访问,如果所有选项卡都关闭则清除它.
if (!sessionStorage.getItem(key)) {
sessionStorage.setItem(key, defaultValue)
}
Run Code Online (Sandbox Code Playgroud) 我在一个应用程序中工作,我需要在用户登录期间保留一些数据,我有这个问题,localStorage,sessionStorage,cookies有什么区别???
我问我可以使用什么来保存DOM中的一些数据,即使用户刷新页面,有些人说:使用sessionStorage或localStorage,然后,有人提出使用ngCookies的想法因为它可以工作每个浏览器,但是,我应该使用哪个?
我已经学会了sessionStorage(在会话期间持续)和localStorage(如果没有删除则永远存在)之间的区别.
我可以看到它localStorage可以用作更好的cookie版本.(更大的尺寸,不是像cookie那样为每个HTTP请求前往服务器).
但是,因为sessionStorage,我在想什么时候才能有效地使用它?
我想到用户输入到pageA中的文本字段,然后在同一个选项卡或浏览器窗口中移动到pageB,pageB可以查找sessionStorage.
我不能真正扩展我的猜测,而不是上面的场景.谁能告诉我sessionStorage怎么用?
对不起,也许这是许多其他人提出的问题,但我真的很困惑,因为一些参考文献有很多不同的方法.
我使用React SPA,Express,Express-session,Passport,JWT
所以我对Cookies,Session和JWT/Passport感到困惑.
许多网站使用cookie来存储购物车令牌.到目前为止,我已根据会话ID存储购物车数据,而不添加任何cookie.
因此,当用户访问我的网站时,我会将其与他们匹配
req.sessionID,然后检索数据库中的数据,如购物车和用户会话.
所以我的问题是我需要存储cookie吗?因为我可以通过req.sessionID访问它来获取所需的数据.
第二个
我使用了一个身份验证passport-google-oauth20.在我成功登录后,数据被保存到会话中.并将其发送到客户端我必须通过URL查询发送它?token='sdsaxas'.
在这种情况下,我得到了很多意见分歧.有人将其保存到本地存储中,有人通过使用JWT将其转换为令牌将其保存为cookie.
jwt.sign(
payload,
keys.jwt.secretOrPrivateKey,
{
expiresIn:keys.jwt.expiresIn // < i dont know what is this expired for cookies or localstorage ?
}, (err, token) => {
res.redirect(keys.origin.url + "?token=" + token);
});
Run Code Online (Sandbox Code Playgroud)
结论是一切都与会话有关所以我可以用sessionID做所有事情?没有cookies或localstorage
只有通过执行一次或每次页面刷新并检索数据然后保存到redux,因为我使用React SPA
当我们在chrome的开发者控制台中打开应用程序段时.我们看到很多东西
应用
存储
高速缓存
我知道缓存用于本地保存资源,而cookie用于在客户端保存数据以维护会话.缓存将以键值格式的形式存储.
我想知道它们之间真正的区别是什么.
browser-cache web-developer-toolbar google-chrome-devtools web
我正在尝试实现一种身份验证机制,其中每个浏览器选项卡可能以不同的用户身份登录.
以下是此系统的规则:
到目前为止我尝试过的:
使用cookies了私有和公共令牌:这不起作用,因为服务器无法知道看哪个饼干中如果用户点击从选项卡内的链接的方式,要求将所有的标签和所有的cookies服务器无法知道哪一个点击链接.
存储私有令牌sessionStorage:这不起作用,因为当用户点击链接时,无法指定应与HTTP GET请求一起发送的自定义标头.
使用AJAX请求页面,然后使用数据URI导航到内存中的页面:出于安全原因,Internet Explorer不允许对HTML内容使用DATA URI.请参阅http://msdn.microsoft.com/en-us/library/cc848897%28v=vs.85%29.aspx
使用<form method="get" enctype="multipart/form-data">隐藏字段使用和传递令牌:enctype ="multipart/form-data"仅支持POST.
使用<form method="post" enctype="multipart/form-data">隐藏字段并使用隐藏字段传递令牌:理论上,这应该可行但现在如果用户使用后退/前进按钮,则会提示用户重新提交表单数据.
使用AJAX请求页面,然后使用重写当前页面document.open(); document.write(); document.close().我想这两个/sf/answers/308326161/和http://forums.mozillazine.org/viewtopic.php?p=5767285&sid=d6a5a2e8e311598cdbad124e277e0f52#p5767285并在这两种情况下,在新的脚本<head>块永远不会执行.
有任何想法吗?
我正在构建一个电影应用程序来帮助我的学习。我想知道如何在会话存储中捕获和保存按钮的点击次数。
我已经能够让点击工作。它增加并显示每个按钮的点击次数,我用一个指令做到了这一点。我还尝试将按钮的 id 作为键和点击次数作为值附加到会话存储中,我可以看到它在我记录时有效,但每当我刷新页面时它似乎都不会保留。
注意:我正在使用 API 来获取我的数据
import { CountClicks } from './counter.directive';
import { HttpService } from './../http.service';
import { Component, OnInit, ElementRef } from "@angular/core";
@Component({
selector: "app-landing-page",
templateUrl: "./landing.component.html",
styleUrls: ["./landing.component.scss"]
})
export class LandingPageComponent implements OnInit {
constructor(private _http: HttpService, private elRef:ElementRef) {}
movies: Object;
title = "CORNFLIX";
ids:any;
storage:any;
public likeCounter: number = 0;
ngOnInit() {
this._http.getMovies().subscribe(data => {
this.movies = data;
// for (let x of data['results']){
// if(sessionStorage.getItem('#'+x.id) != null){
// console.log("#" …Run Code Online (Sandbox Code Playgroud) 我一直在研究如何最好地在单页应用程序(SPA)中存储身份验证令牌。SO 上关于这个主题存在一些争论,但据我所知,没有一个提供具体的解决方案。
昨天和今天花了很多时间在互联网上寻找答案,我发现了以下内容:
本地存储API。我发现一些基本指南建议使用localStorage(尽管许多人正确地建议反对)。我不喜欢这种方法,因为存储的数据localStorage在发生 XSS 攻击时可以被访问。
网络工作者。如果令牌存储在 Web Worker 中,则打开新选项卡时用户将不会登录。这导致了不合格且令人困惑的用户体验。
关闭。与 Web Workers 相同 - 没有持久性。
仅 Http Cookie。一方面,我读到这可以防止 XSS。然而,另一方面,这是否意味着我们现在必须处理CSRF?那么这就完全是一场新的争论:如何使用 SPA + REST API 实现 CSRF 令牌?
其他人都是怎么做的?