相关疑难解决方法(0)

localStorage,sessionStorage,session和cookies有什么区别?

localStorage,sessionStorage,session和cookies的技术优势和缺点是什么?我何时使用其中一个?

cookies html5 session-storage local-storage

488
推荐指数
9
解决办法
25万
查看次数

如何在浏览器窗口/选项卡关闭时删除localStorage项目?

我的案例:带有键+值的localStorage应该在浏览器关闭时删除,而不是单个标签.

请查看我的代码是否正确以及可以改进的内容:

//create localStorage key + value if not exist
if(localStorage){
   localStorage.myPageDataArr={"name"=>"Dan","lastname"=>"Bonny"}; 
}

//when browser closed - psedocode
$(window).unload(function(){
  localStorage.myPageDataArr=undefined;
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 local-storage

371
推荐指数
12
解决办法
52万
查看次数

标签或窗口之间的通信

我正在寻找一种方法,如何在浏览器中的多个选项卡或窗口之间进行通信(在同一个域上,而不是CORS),而不留痕迹.有几个解决方案:

  1. 使用窗口对象
  2. 的postMessage
  3. 饼干
  4. localStorage的

第一个可能是最糟糕的解决方案 - 你需要从当前窗口打开一个窗口,然后只要你打开窗户就可以进行通信.如果您在任何窗口中重新加载页面,则很可能会丢失通信.

第二种方法,使用postMessage,可能启用跨源通信,但遇到与第一种方法相同的问题.您需要维护一个窗口对象.

第三种方式,使用cookie,在浏览器中存储一些数据,这可以有效地看起来像向同一域上的所有窗口发送消息,但问题是你永远不知道所有标签是否已经读过"消息"打扫干净.您必须实现某种超时以定期读取cookie.此外,您受限于最大cookie长度,即4KB.

使用localStorage的第四种解决方案似乎克服了cookie的限制,甚至可以使用事件进行监听.接受的答案中描述了如何使用它.

编辑2018:接受的答案仍然有效,但现代浏览器有一个更新的解决方案,使用BroadcastChannel.有关如何使用BroadcastChannel在选项卡之间轻松传输消息的简单示例,请参阅其他答案.

javascript browser html5 ipc broadcast-channel

136
推荐指数
7
解决办法
7万
查看次数

如何在浏览器标签中区分会话?

在使用JSP和Servlets在java中实现的Web应用程序中; 如果我在用户会话中存储信息,则从同一浏览器的所有选项卡共享此信息.如何在浏览器选项卡中区分会话?在这个例子中:

<%@page language="java"%>
<%
String user = request.getParameter("user");
user = (user == null ? (String)session.getAttribute("SESSIONS_USER") : user);
session.setAttribute("SESSIONS_USER",user);
%>
<html><head></head><body>
<%=user %>
<form method="post">
User:<input name="user" value="">
<input type="submit" value="send">
</form>
</body></html>
Run Code Online (Sandbox Code Playgroud)

将此代码复制到jsp页面(testpage.jsp)中,将此文件部署在服务器上的Web应用程序的现有上下文中(我使用Apache Tomcat),然后使用正确的URL(localhost/context1/testpage.jsp)打开浏览器(FF,IE7或Opera ),键入您在输入中的姓名并提交表格.然后在同一浏览器中打开一个新选项卡,然后您可以在新选项卡上看到您的名称(从会话中获取).小心浏览器缓存,有时似乎不会发生,但它在缓存中,刷新第二个选项卡.

谢谢.

browser jsp servlets web-applications sessionid

130
推荐指数
8
解决办法
24万
查看次数

我什么时候应该使用html5 sessionStorage?

我已经学会了sessionStorage(在会话期间持续)和localStorage(如果没有删除则永远存在)之间的区别.

我可以看到它localStorage可以用作更好的cookie版本.(更大的尺寸,不是像cookie那样为每个HTTP请求前往服务器).

但是,因为sessionStorage,我在想什么时候才能有效地使用它?

我想到用户输入到pageA中的文本字段,然后在同一个选项卡或浏览器窗口中移动到pageB,pageB可以查找sessionStorage.

我不能真正扩展我的猜测,而不是上面的场景.谁能告诉我sessionStorage怎么用?

html html5 local-storage web-storage

18
推荐指数
2
解决办法
7318
查看次数

如何使用AngularJS在浏览器cookie中存储身份验证承载令牌

我使用ASP.net Identity创建了一个承载令牌.在AngularJS中,我编写了这个函数来获取授权数据.

$scope.GetAuthorizeData = function () {
  $http({
    method: 'GET',
    url: "/api/Values",
    headers: { 'authorization': 'bearer <myTokenId>' },
  }).success(function (data) {
    alert("Authorized :D");
    $scope.values = data;
  }).error(function () {
    alert("Failed :(");
  });
};
Run Code Online (Sandbox Code Playgroud)

所以我想将此令牌存储到浏览器cookie中.如果此处存在此令牌,则获取令牌并从IIS服务器获取数据,否则重定向到登录页面以登录以获取新令牌.

同样,如果用户点击退出按钮,它应该从浏览器cookie中删除令牌.

这该怎么做 ?有可能吗?是验证和授权用户的正确方法吗?如果有多个用户令牌怎么办?

javascript asp.net-web-api angularjs asp.net-identity

12
推荐指数
2
解决办法
4万
查看次数

当跟踪带有target ="_ blank"的链接时,新窗口上的sessionStorage不为空

在关注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,无论它们如何被打开?

任何帮助表示赞赏!

html5 cross-browser session-storage

10
推荐指数
1
解决办法
5569
查看次数

如何结合localStorage和sessionStorage的优点

我想在浏览器标签之间共享我的身份验证令牌,建议使用HTML5localStorage.但是,当浏览器关闭时,我不希望任何与身份验证相关的内容留在我的存储中,建议使用HTML5sessionStorage.

与此主题相关的参考1(单击):

这意味着您无法在选项卡之间共享,为此您应该使用localStorage

与此主题相关的参考2(单击):

因此,建议不要将任何敏感信息存储在本地存储中

如何在选项卡之间组合我的身份验证令牌,并确保在浏览器关闭时没有任何内容留在存储中?

其他网站如何解决这个看似简单的问题.

authentication html5 authorization session-storage local-storage

10
推荐指数
2
解决办法
1338
查看次数

在标签之间共享会话

我有JAVA Web应用程序,我需要停止在浏览器选项卡之间共享会话,这意味着

用户打开浏览器,登录到他的帐户并在同一浏览器的新选项卡中打开特定页面.根据默认设置,会话将共享到新选项卡,用户将自动登录到新选项卡.任何人都可以告诉我这是如何停止的,所以我至少可以在几个敏感页面中限制它,如果不是整个应用程序.

session jsp java-ee browser-tab

7
推荐指数
1
解决办法
2万
查看次数

反应应用程序本地存储未设置

  • 我正在尝试构建一个反应应用程序,在这里我可以看到类似于stackoverflow的通知。
  • 当我打开两个不同的选项卡并打开stackoverflow时。我在两个不同的标签中看到通知。
  • 但是当我单击该通知图标时,数字消失了。
  • 同样,在另一个标签中,编号也会消失而无需刷新页面。
  • 我通过在ie和chrome中打开来分析了stackoverflow站点
  • 当我在chrome浏览器中单击信誉时,我看到正在进行网络通话,而在IE浏览器中却没有刷新数字,而消失
  • 我在本地存储和会话存储中看到了一些值。
  • 是否有可能在进行api调用时实现withot,暂时可以使用模拟数据来实现
  • 我构建选项卡ui并重定向到选项卡页面
  • 所以我谷歌,发现这个链接浏览器sessionStorage。标签之间共享?
  • 在我的反应代码中使用了它,由于某种原因未设置本地存储
  • 它进入此方法anotherPage
  • 但存储密钥值未添加。
  • 通过放置控制台进行调试,但未在窗口事件内打印任何内容。
  • 您能否告诉我如何解决它,表明我可以在不同的链接和标签之间共享会话。
  • 在下面提供我的screenhot代码段和沙箱

信誉通知方案 在此处输入图片说明 消息通知方案 在此处输入图片说明

https://codesandbox.io/s/material-demo-j5ec5

demo.js

  anotherPage = () => {
    console.log("redictToStepper --->");
    this.props.history.push("/anotherPage");

    if (!event) {
      console.log("window --->");
      event = window.event;
    } // ie suq
    if (!event.newValue) return; // do nothing if no value to work with
    if (event.key == "getSessionStorage") {
      console.log("window --->");
      // another tab asked for the sessionStorage -> send it
      localStorage.setItem("sessionStorage", JSON.stringify(sessionStorage));
      // the other tab should now …
Run Code Online (Sandbox Code Playgroud)

html javascript local-storage reactjs redux

6
推荐指数
1
解决办法
456
查看次数