我们最近从cookie切换到使用sessionStorage - 切换的触发器是IE问题.
现在,我们发现sessionStorage不能跨子域工作 - 存储与之www.site.com隔离site.com.
是否有一种现代的选择让两者合作?这很容易通过cookie实现,但我不想从sessionStorage恢复,或者(gasp)同时使用这两种方法.
我想在客户端使用localStorage,现在我将这些数据发送到AJAX请求的主体中.但是,能够通过页面请求发送数据会很好.有没有办法在HTTP标头中放置localStorage数据(或者我猜任何数据),以便我可以用Javascript读取它并将其存储在localstorage中?
情况:我有一个数据库和一个互动的网络应用程序,用于显示和更新科学数据表.我的任务是构建一个允许用户使用的移动应用程序
问题:对于管理此类应用程序而不依赖于一致的互联网访问,进行身份验证/下载/存储/上传必要数据的最佳方法是什么?如果两个人调整相同的读数,并且在同步之间发生一次更新,我如何跟踪哪些表和值已被更改,并防止更改丢失?
当前的思路:我目前关于碰撞控制的暂定策略是维护一个"同步"表,该表存储代表存储在sessionStorage中的每个在线数据库事务的JSON对象,并让应用程序在上传数据之前不断验证其同步,并检查此对象对特定主键更新的潜在冲突.我希望能够在编辑阶段锁定元组,但由于互联网访问不一致,这似乎是不可能的.
对不起,如果这是一个新问题,我是整个移动应用程序开发的新手......
tl; dr如何防止数据库的异步更改从进行和离线的移动应用程序覆盖/与另一个人对同一数据库的更改发生冲突?我如何验证没有网络连接的用户?
我有一些来自不同控制器的数据,这些数据使用https://github.com/fredricrylander/angular-webstorage存储在 sessionStorga 中。数据存储正常并且在当前会话中可用。我面临的问题是制作一个控制器来观察 webstorage.session 中的变化,我是这样做的:
app.controller(
'updateDataController',
['$scope','$http','$sce','$location','$routeParams', '$rootScope', '$document', 'webStorage', '$interval', 'md5',
function($scope,$http,$sce,$location,$routeParams, $rootScope, $document, webStorage, $interval, md5) {
$scope.mySessionStorage = webStorage.session;
$scope.$watch('mySessionStorage', function (newVal, oldVal) {
console.log("The web storage has changed");
}, true);
}
]);
Run Code Online (Sandbox Code Playgroud)
我只得到一次 console.log 输出。即使我更改了 webStorage.session 的内容,我也没有收到任何日志。可能是什么问题呢?
如果我设置了localStorage项目,StorageEvent则为除当前之外的所有同域窗口触发。
如果我以StorageEvent编程方式引发,则StorageEvent仅针对目标窗口触发。
代码示例:
var evt = document.createEvent('StorageEvent');
evt.initStorageEvent('storage',false,false,'key','oldValue','newValue',
'http://example.com',window.localStorage);
window.dispatchEvent(evt);
Run Code Online (Sandbox Code Playgroud)
我可以修改代码示例以模拟来自 window.setItem
最近有人问我为什么我们的网站在没有 cookie 的情况下无法运行。我的解释是我们需要在 cookie 中保存令牌和一些引用,以便稍后我们可以使用它来发出请求,并且我们可以使用限制选项在浏览器中保存数据。但是他对我的回答并不满意,而且我还认为我们可以通过一些选项使其工作,而不是使用 cookie/localStorage/sessionStorage。
我的问题是为什么大多数网站在没有 cookie 的情况下无法运行?我们可以让网站在浏览器中没有任何存储的情况下运行吗?
我的一个网页中有一些复选框,并且此页面必须每 1 分钟刷新一次以解决某些数据一致性问题。
我使用window.sessionStoage保留已选中的复选框,以便用户不会丢失已在页面刷新时选中的复选框。
但是我想清除sessionStorage用户离开该页面的时间(不一定离开我的网站,可能会转到同一网站上的另一个页面),同样如果我使用该onunload事件,则存储将被清除以防万一刷新也。
是否有任何其他事件或任何解决方法可以帮助我实现这一目标。
我使用 auth0 进行身份验证,因此在进行身份验证时,用户将被重定向到另一个域 auth0 域,然后重定向回我的 Web 应用程序。
如果我在用户单击身份验证链接之前在会话存储中保存了一些内容,假设用户仍然在同一个窗口和选项卡中,那么当用户重定向回我的应用程序时,该值是否仍然存在?
大家好,很难更新我存储在sessionstorage中的值.我尝试了几种方法来定位嵌套对象值而没有运气.任何帮助将不胜感激.
我在JavaScript中创建的对象
var projectInfo = {
project1: {
name: 'Unique name',
extraCredit: true
}
project2: {
name: 'Unique name',
extraCredit: true
}
}
Run Code Online (Sandbox Code Playgroud)
我如何坚持参加会议
sessionStorage.setItem('projectInfo', JSON.stringify(projectInfo));
Run Code Online (Sandbox Code Playgroud)
如何在项目信息中定位嵌套项目名称.例如
sessionStorage.setItem(projectInfo.project1.name, 'Student Fund raiser')
Run Code Online (Sandbox Code Playgroud) 我在(oidc-client.js)+ .Net Core IdentityServer4处理的Angular 8中获得了授权。
一切似乎都正常,但是当我在第二个选项卡中打开相同的应用程序时,则需要我再次登录。IdentityServer4具有cookie,因此单击“ 登录”按钮就足够了,并且无需再次提供登录名/密码即可接收新令牌。无论如何,它仍然很烦人。
有什么办法解决吗?我在githubg上发现了一个可能会有所帮助的问题。
有人建议需要将令牌本地化从LocalStorage更改为SessionStorage。但是从个人角度而言,SessionStorage更好,我会保留在那个位置。
authorization session-storage identityserver4 oidc-client-js angular
session-storage ×10
javascript ×6
cookies ×2
html5 ×2
session ×2
web-storage ×2
angular ×1
angularjs ×1
browser ×1
html ×1
http-headers ×1
jquery ×1
node.js ×1