除了因为会话存储是多个页面的会话全局,你为什么要使用viewstate来保存值?
从客户端到服务器之间来回发送除了一些小的查询字符串之外的任何类型的信息似乎有点荒谬.我的意思是浪费带宽(!),仅用于存储目的.该会话虽然跨越多个页面,但看起来像是一个完全优于视图状态的替代方案.
特别是对于asp.net ajax控件和变体,viewstate可能很快变得臃肿,跟踪所有这些不同控件和html元素的各种状态和变量.
但那么为什么页面变量和对象的视图存储呢?
也许我错过了该页面的viewstate存储的另一个很好的用法,有没有人知道那里的东西?
谢谢阅读!
编辑:每个人都有一个很好的答案,对不起,如果我没有选择你的.
使用$ cookieStore和&window.sessionStorage有什么区别?是否有时候应该使用另一个?安全问题?
这是我目前所知道的:
AngularJS文档声明$ cookieStore服务由"会话cookie"(https://docs.angularjs.org/api/ngCookies/service/ $ cookieStore)支持.因此,使用$ cookieStore存储的信息似乎与使用它的窗口/选项卡相关联.:这是通过在$的CookieStore代码使用了神秘$浏览器服务的肯定https://github.com/angular/angular.js/blob/master/src/ngCookies/cookies.js#L125.
但是,由于$ browser是一个内部服务并且可能会发生变化,我无法看到它是如何存储数据的,看看它是否与sessionStorage类似.
相同的浏览器/选项卡/窗口范围似乎适用于$ window.sessionStorage(sessionStorage和localStorage的范围).
如何防止会话存储在JSON/XML调用上创建会话?
我的问题是我在数据库中保存会话,并在多个api调用中被淹没.
我正在使用Rails 3.2.2和Devise进行身份验证.
关于localStorages的标准W3C标准说:
共享一个主机名的不同作者(例如,托管内容的用户)
geocities.com共享一个本地存储对象.没有功能可以通过路径名限制访问.因此,敦促共享主机上的作者避免使用这些功能,因为对其他作者来说读取数据并覆盖它是微不足道的.
但对于sessionStorages,据说它确实为标签和窗口提供了单独的sessionStorages,甚至来自同一个来源.
但似乎iframe确实共享sessionStorage.
有没有办法在同一来源的via iframe上有单独的sessionStorage.
编辑:由于标签/窗口确实有单独的sessionStorage存在混淆,这里是一个示例页面.将代码保存在文件中,然后使用两个不同的选项卡将其打开.然后刷新一个选项卡5次,刷新另一个选项卡1次.你会看到数字不同.
<!DOCTYPE html>
<html>
<body>
<div id="result"></div>
<script>
sessionStorage.setItem("counter", (parseInt(sessionStorage.getItem("counter"), 10) || 0 ) + 1);
document.getElementById("result").innerHTML = sessionStorage.getItem("counter");
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Edit2:我到目前为止尝试使用的是iframe sandbox属性.但是我在iframe中遇到了一个错误,我根本不能使用sessionStorage.我不得不补充一下sandbox="allow-same-origin".但是,sessionStorage在所有iframe中再次相同.
提前致谢.
我正在构建一个电影应用程序来帮助我的学习。我想知道如何在会话存储中捕获和保存按钮的点击次数。
我已经能够让点击工作。它增加并显示每个按钮的点击次数,我用一个指令做到了这一点。我还尝试将按钮的 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) 我只是偶然发现了一个问题,即当应用程序打开一个新选项卡时,Chrome 突然停止传播会话存储信息这在 Chrome 89 更新后停止之前工作正常。
有没有人遇到过这个问题?
谢谢
我的应用程序要求用户在浏览器的不同标签中登录不同的帐户(我们专门针对Chrome).由于Rails使用cookie来存储会话信息,因此当用户登录时,他们将登录浏览器中的所有选项卡.我正在使用ActiveRecord会话存储方法,但即使会话的ID也保存为cookie.
似乎有一个使用HTML5的sessionStorage机制的解决方案,该机制的范围仅限于用户登录的选项卡或窗口.我似乎只需要将会话信息保存到sessionStorage而不是cookie中.但我根本找不到任何相关信息.
假设无法在Rails中配置会话存储来执行此操作,是否可以覆盖ActiveRecord会话保存机制?有关如何查找有关如何进行此操作的信息的指示?
在关注Weblinks时,我看到了HTML5 sessionStorage的不同行为.有时第一页的sessionStorage被复制到TargetPage,有时我在TargetPage上得到一个空的sessionStorage.
任何人都可以解释一下,为什么会这样?
鉴于以下链接:
<a href="TargetPage.html" target="_blank">link</a>
Run Code Online (Sandbox Code Playgroud)
当我通过右键单击 - >"在新选项卡中打开链接"打开链接时,TargetS上的sessionStorage为空.(预期) 但是当我用正常的左键单击打开链接时,sessionStorage会被复制到TargetPage.(意外)
注意:我在Chrome和Firefox中看到过这种行为.在这两种情况下,Internet Explorer 9都提供空的sessionStorage.这是我的预期行为.
我创建了一个jsFiddle来演示这种行为:http://jsfiddle.net/P9nUv/3/
任何人都可以想到一个跨浏览器的解决方案,以确保新浏览器选项卡/ Windows的空sessionStorage,无论它们如何被打开?
任何帮助表示赞赏!
我想在浏览器标签之间共享我的身份验证令牌,建议使用HTML5localStorage.但是,当浏览器关闭时,我不希望任何与身份验证相关的内容留在我的存储中,建议使用HTML5sessionStorage.
这意味着您无法在选项卡之间共享,为此您应该使用localStorage
因此,建议不要将任何敏感信息存储在本地存储中
如何在选项卡之间组合我的身份验证令牌,并确保在浏览器关闭时没有任何内容留在存储中?
其他网站如何解决这个看似简单的问题.
authentication html5 authorization session-storage local-storage
session-storage ×10
html5 ×3
session ×3
javascript ×2
activerecord ×1
angular ×1
angularjs ×1
asp.net ×1
browser ×1
cookies ×1
cookiestore ×1
devise ×1
iframe ×1
storage ×1
typescript ×1
viewstate ×1
warden ×1