查看关于设置cookie的php文档,我看到我可以设置cookie的过期日期.您可以将cookie设置为在浏览器会话结束时或将来的某个时间到期,但我没有看到将cookie设置为永不过期的方法.这是否可能,这是如何实现的?
几个月前我开始使用PHP.为了为我的网站创建登录系统,我阅读了有关cookie和会话及其差异的信息(cookie存储在用户的浏览器和服务器上的会话中).那时候,我更喜欢饼干(谁不喜欢饼干?!)并且只是说:"谁在乎?我没有任何好处将它存储在我的服务器中",所以,我继续使用cookies我的学士毕业设计.然而,在完成我的应用程序的重要部分之后,我听说对于存储用户ID的特定情况,会话更合适.所以我开始考虑如果陪审团问我为什么用饼干代替会话,我会怎么说?我有这个原因(我不需要存储有关用户的内部信息).那是不够的一个原因?还是不止于此?
能告诉我使用cookies保存用户ID的优缺点吗?
感谢StackOverflow中的所有人!
我正在尝试使用新的Fetch API但是遇到了Cookie问题.具体来说,在成功登录后,将来的请求中会有一个Cookie标头,但是Fetch似乎忽略了这些标头,而我使用Fetch发出的所有请求都是未经授权的.
是因为Fetch还没有准备好,或者Fetch不能与Cookies一起使用?
我用Webpack构建我的应用程序.我也在React Native中使用Fetch,它没有相同的问题.
我需要找出一种方法来唯一地识别访问我正在创建的网站的每台计算机.有没有人对如何实现这一点有任何建议?
因为我希望解决方案适用于所有机器和所有浏览器(在合理范围内),我正在尝试使用javascript创建解决方案.
我很感激帮助.谢谢.
编辑:
Cookies不行.
假设计算机没有发生硬件更改,我需要能够基本上创建一个计算机独有的guid并且可重复.我正在考虑的方向是获取网卡的MAC和这种性质的其他信息,这将是访问该网站的机器.
我一定错过了一些关于cookie的基本知识.在本地主机上,当我设置在服务器端的cookie,并明确指定域为localhost(或.localhost).某些浏览器似乎没有接受cookie.
Firefox 3.5:我在Firebug中检查了HTTP请求.我看到的是:
Set-Cookie:
name=value;
domain=localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
Run Code Online (Sandbox Code Playgroud)
或者(当我将域设置为.localhost时):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,都不会存储cookie.
IE8:我没有使用任何额外的工具,但cookie似乎也没有存储,因为它不会在后续请求中发回.
Opera 9.64: localhost和.localhost都工作,但是当我检查Preferences中的cookie列表时,域名设置为localhost.local,即使它列在localhost下(在列表分组中).
Safari 4: localhost和.localhost都可以工作,但它们在Preferences中始终列为.localhost.另一方面,没有显式域的cookie,它显示为localhost(无点).
localhost有什么问题?由于存在这么多的不一致,必须有一些涉及localhost的特殊规则.另外,我不完全清楚为什么域名必须以点为前缀?RFC 2109明确声明:
Domain属性的值不包含嵌入点或不以点开头.
为什么?该文件表明它必须对安全做些什么.我不得不承认我没有阅读整个规范(稍后可能会这样做),但听起来有点奇怪.基于此,在localhost上设置cookie是不可能的.
根据欧盟电子隐私指令第5条第(3)款(又名"Cookie法"),针对欧盟用户的网站必须在用户设置cookie之前获得用户的选择同意.
我试图在我的网站上使用Google Analytics.
我认为Google Analytics(GA)可以在不需要使用cookie的情况下进行某种级别的分析数据收集.
但是,我在页面请求期间找不到有关如何将有关"同意状态"的信息传回Google的相关信息(在Google网站/设置面板上).所以,我唯一的选择似乎是我不应该嵌入谷歌标记代码在所有,如果用户没有明确给出同意.这看起来有点激烈.
让我的服务器端脚本hasConsentedToCookies=FALSE在JavaScript标记中设置一个标志将允许我指示Google的服务以优雅降级的方式运行.
Google Analytics上是否设置了禁止对尚未同意的用户使用Cookie的设置?
如果是这样,我在哪里可以找到相关信息?
我正在进行Web开发培训,并且正在学习JSP和Servlets.我有一些知识HttpSession- 我在一些示例项目中使用过它.
在浏览器中,我看到了"删除cookie"的选项.如果我删除了cookie,它HttpSession也会删除它.
Cookie和会话是一样的吗?它们之间有什么区别?
我希望能够设置一个cookie,并在每次向nodejs服务器实例发出请求时读取该cookie.可以用几行代码完成,而不需要引入第三方库吗?
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/');
Run Code Online (Sandbox Code Playgroud)
只是尝试直接从nodejs.org获取上述代码,并在其中处理cookie.
假设我有一个名为的网站a.com,当加载此网站的特定页面时,比如页面链接,我喜欢为另一个被调用的网站设置一个cookie b.com,然后将用户重定向到b.com.
我的意思是,在加载时a.com/link我想为其设置一个cookie b.com并将用户重定向到b.com.
我测试了它,浏览器实际上收到了cookie a.com/link,但它没有在重定向请求上发送该cookie b.com.这是正常的吗?
我们可以为其他域设置cookie吗?
我知道基于cookie的身份验证.可以应用SSL和HttpOnly标志来保护来自MITM和XSS的基于cookie的身份验证.但是,需要采取更多特殊措施以保护其免受CSRF的影响.它们有点复杂.(参考)
最近,我发现JSON Web Token(JWT)作为身份验证的解决方案非常热门.我知道有关编码,解码和验证JWT的内容.但是,我不明白为什么有些网站/教程在使用JWT时不需要CSRF保护.我已经阅读了很多,并试图总结下面的问题.我只是希望有人可以提供JWT的全貌并澄清我对JWT误解的概念.
如果JWT存储在cookie中,我认为它与基于cookie的身份验证相同,除了服务器不需要有会话来验证cookie /令牌.如果没有实施特殊措施,CSRF仍存在风险.JWT不是存储在cookie中吗?
如果JWT存储在localStorage/sessionStorage中,那么没有cookie所以不需要防止CRSF.问题是如何将JWT发送到服务器.我发现这里建议使用jQuery通过ajax请求的HTTP头发送JWT.那么,只有ajax请求才能进行身份验证吗?
此外,我发现还有一个博客节目使用"授权标题"和"承载"来发送JWT.我不明白博客谈论的方法.有人可以解释一下"授权标题"和"持票人"的更多信息吗?这是否使所有请求的HTTP头传输JWT?如果是的话,CSRF怎么样?