gpt4 book ai didi

javascript - HTML5 session 存储发送到服务器

转载 作者:搜寻专家 更新时间:2023-11-01 05:01:25 30 4
gpt4 key购买 nike

如果我是对的, session 存储存储在客户端,并且只能通过一个选项卡访问。

如何将存储在 session 存储中的信息发送到服务器?我可以为此使用 cookie,但如果我打开 2 个选项卡,cookie 将被第二个选项卡重写。

谢谢

最佳答案

存储对象(包括 localStorage 和 sessionStorage)在打开相同页面的所有选项卡中可用。

但是(一些评论指出这是不正确的,但这是对文档的误解),当您打开一个新选项卡时,会在内部创建一个新的存储对象。这是第一个的克隆,因此当时的内容是相同的。

它们与那一点分开处理,但您可以通过收听storage event 来同步它们在您的代码中。

来自 http://dev.w3.org/html5/webstorage/#the-sessionstorage-attribute :(请注意,规范针对的是实现者)

When a new top-level browsing context is created by cloning an existing browsing context, the new browsing context must start with the same session storage areas as the original, but the two sets must from that point on be considered separate, not affecting each other in any way. [...] When the setItem(), removeItem(), and clear() methods are called on a Storage object x that is associated with a session storage area [...], then for every Document object whose Window object's sessionStorage attribute's Storage object is associated with the same storage area, other than x, send a storage notification.

也就是说,当在事件选项卡中修改存储时,storage 事件将发送到所有其他选项卡(对于同一来源) - 但不是事件选项卡,当然不需要,因为这是正在修改的。

使用 event读取 keynewValue 字段以更新当前 inactive 选项卡中的 localSession(有还有事件上的 oldValue)。 storageArea 包含受影响的存储对象(如果您同时使用本地和 session 存储,则很有用)。

至于“一个域”- 是的,相同的数据将仅可用于相同的来源(方案、域和端口)。

将数据发送到服务器是完全可能的。存储在存储( session 和本地)中的所有内容都存储为字符串。不过,我建议对其进行编码(JSON 不是 必需的,因为它已经存储为字符串)。使用 f.ex:

var dataForServer = encodeURIComponent(sessionStorage.getItem(myKey));

然后将其作为表单、url 或 ajax 的一部分发送。

关于javascript - HTML5 session 存储发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16792158/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com