我使用 jquery.cookie 来存储客户端应用程序 cookie,其中一些 cookie 包含 JSON。
这是我到目前为止的脚本
trigger.on('click touchend', function () {
var StoredSettings = $.cookie('qlToggled'),
isToggled = 0,
offset = -300,
endpoint = 15,
triggerX = $('#leftcolumn').offset().left + $('#leftcolumn').width();
if (typeof StoredSettings !== 'undefined') {
isToggled = StoredSettings.toggled;
offset = StoredSettings.cOffset;
endpoint = StoredSettings.cEndpoint;
triggerX = StoredSettings.cTriggerX;
}
if (isToggled == '1') {
offset = 0;
endpoint = 315;
triggerX = $('#leftcolumn').width();
var cookieValues = { toggled: '0', cOffset: offset, cEndpoint: endpoint, cTriggerX: triggerX };
$.cookie('qlToggled', JSON.stringify(cookieValues), { …Run Code Online (Sandbox Code Playgroud) 我正在检查我的框架的代码,该代码删除客户端上的 cookie,下面是它执行此操作的代码片段:
return setcookie($name, NULL, -86400, Cookie::$path, Cookie::$domain, Cookie::$secure, Cookie::$httponly);
我特别感兴趣的是为什么这个数字是-86400秒?它只是随机数还是在某些约定中有任何特殊含义?我可以用 使 cookie 过期-1,不是吗?
我知道这个问题关于在 RESTful SPI 中使用 php 会话被问了很多次,但答案通常是 php 会话在多个请求中保留状态,因此不是无状态的,并且由于我对此声明有疑问,所以我想反驳它并得到好的答案:
如果我对 php 会话的理解正确的话,这就是它们的工作原理:
因此,服务器上不会保存任何应用程序状态信息,并且 php 会话是无状态的,因为会话 ID 是由客户端而不是服务器保存的。
当然,会话文件保存在服务器上,因此保留了状态。但是将信息保存在此会话文件中或将其保存在数据库中有何区别?无论是否有会话,一些数据都保存在服务器上,其中一些(或全部)仅与某个用户或一组用户相关。
假设有一场国际象棋比赛。假设所有游戏逻辑都在 php 文件中实现。士兵位置保存在表中。玩家必须以某种方式识别以告诉服务器下一步要做什么。现在假设士兵位置保存在会话文件中。玩家必须再次识别,这个场景与db表场景有什么不同吗?
编辑:感谢您的良好回答,他们提出了另一个问题:基于会话的应用程序(例如上一段中的国际象棋游戏)是否可以实现为 RESTful 服务?
问题的网址
https://www.one.om/testtranslate
尝试删除所有名为“googtrans”的 cookie
当您从谷歌翻译下拉列表中选择一种语言时,页面会按预期进行翻译,刷新页面即可查看问题:
现在应该有两个名为“googtrans”的 cookie,但域不同:
domain 1: ".one.om"
domain 2: "www.one.om"
Run Code Online (Sandbox Code Playgroud)
当我使用时
$.cookie('googtrans',null, {domain:'www.one.om'});
Run Code Online (Sandbox Code Playgroud)
效果很好,但是
$.cookie('googtrans',null, {domain:'.one.om'});
Run Code Online (Sandbox Code Playgroud)
没有什么建议吗?
我正在尝试使用 Passport.js 和 Express-Session 实现登录功能,它运行良好,
var passport = require('passport'),
session = require('express-session'),
MongoDBStore = require('connect-mongodb-session')(session);
var sessionStore = new MongoDBStore({
uri: config.db,
collection: 'sessions'
});
var sessionOptions = {
name: 'very-secure-cookie',
secret: config.secret,
resave: false,
saveUninitialized: true,
cookie: {
secure: true,
maxAge: null
},
store: sessionStore
};
app.use(session(sessionOptions));
app.use(passport.initialize());
app.use(passport.session());
Run Code Online (Sandbox Code Playgroud)
这里,maxAge是null,意味着客户端在关闭浏览器窗口时会注销。然而,我想用客户的电子邮件地址存储一个额外的 cookie,以便在<input type="text" name="email">他们稍后回来时想要重新登录时预先填写。
我尝试过app.use()使用另一个会话对象来将电子邮件信息存储在另一个 cookie 中,但由于某种原因,该 cookie 只设置一次(第一个)。
app.use(session(returningSessionOptions));
Run Code Online (Sandbox Code Playgroud)
在任何地方都找不到任何明智的解决方案:(
哦,我不得不提一下,我考虑过将cookie-parser中间件与 一起使用express-session,但文档指出这可能会导致冲突。
如何将数组的内容存储在 cookie、会话或本地存储中,然后再次恢复或推送到数组中以正常使用。它应该设置为特定时间,并且在该时间之后,它不应该恢复值。
编辑 我尝试了此方法来获取本地存储和会话存储以及数组所需的cookie
var date = new Date();
var minutes = 30;
date.setTime(date.getTime() + (minutes * 60 * 1000));
$.cookie("example", "foo", { expires: date });
Run Code Online (Sandbox Code Playgroud) 也许我理解有问题?
这怎么可能允许从扩展程序访问所有 cookie?
这是否意味着任何扩展程序都可能像这样简单地窃取所有 cookie?
我假设 chrome.google.com 支持人员正在检查每个扩展程序和每个更新,以确保不存在此类危险的事情,但我有开发扩展程序的经验,并且看起来扩展程序更新是自动调节的。那么,所有这一切是否意味着任何扩展程序都可能窃取所有 cookie 数据并将其发送到任何地方?
我有一个使用 Session 的购物车实现,并且想要迁移到基于 cookie 的购物车。此外,实际上我将完整的购物车存储在会话中,并希望迁移到只有 cartID 位于 cookie 中而内容位于数据库中的版本。
我读过很多博客文章,甚至还有关于 SO 的问题,但在某些领域仍然存在一些困惑:
例如,我正在使用 asp net mvc 和 c#。
我在尝试检索 cookie(如果已设置)时遇到问题,如果未设置,我想更新它然后检索它。
首先,我有一个设置 cookie 的函数:
func IndexHandler(w http.ResponseWriter, r *http.Request) {
...
ck := http.Cookie{
Name: "id",
Value: 5,
MaxAge: 60,
}
}
Run Code Online (Sandbox Code Playgroud)
然后在另一个函数中,我检查该 cookie 是否存在,如果存在(抛出错误),则重新创建它
func CheckUpdateCookie(w http.ResponseWriter, r *http.Request) {
val, err := r.Cookie("id")
if err != nil {
ck := http.Cookie{
Name: "id",
Value: 5,
MaxAge: 60,
}
http.SetCookie(w, &ck)
CheckUpdateCookie(w, r)
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致它陷入无限循环,并且无法识别 cookie 已被再次设置,如果我打印错误,http: named cookie not present即使我已经在函数体中设置了 cookie,我也会得到这个错误。
在我的网站上,我使用联系表 7 将价目表发送给我们的潜在客户。他们只需要填写姓名和电子邮件即可。如果客户想要预订我们的服务,只需单击电子邮件中的链接即可进入另一个预订表格。我认为要求他们再次填写姓名和电子邮件看起来不太好,所以我想知道是否有办法从 cookie 或类似的东西自动填充?预先非常感谢
cookies ×10
javascript ×3
jquery ×3
php ×2
session ×2
asp.net-mvc ×1
autofill ×1
go ×1
json ×1
mysql ×1
node.js ×1
passport.js ×1
rest ×1
wordpress ×1