Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否应该在每个响应上设置cookie头?_Python_Http_Session_Pyramid - Fatal编程技术网

Python 是否应该在每个响应上设置cookie头?

Python 是否应该在每个响应上设置cookie头?,python,http,session,pyramid,Python,Http,Session,Pyramid,假设您正在实施会话 检查浏览器是否显示会话cookie。如果是,则验证cookie并找到会话关联的用户,然后继续处理请求 如果未找到会话cookie,则创建一个新会话,并将cookie发送到浏览器,您希望在后续请求中收到该cookie 现在我的问题是:如果您确实在请求中找到了会话cookie,您会在响应中重新发送相同的cookie吗。在什么情况下这是正确的 注意:我以Pyramid(Python)程序员的身份提出这个问题,因为Pyramid实现在每个响应上无条件地发送会话cookie。()通常,

假设您正在实施会话

检查浏览器是否显示会话cookie。如果是,则验证cookie并找到会话关联的用户,然后继续处理请求

如果未找到会话cookie,则创建一个新会话,并将cookie发送到浏览器,您希望在后续请求中收到该cookie

现在我的问题是:如果您确实在请求中找到了会话cookie,您会在响应中重新发送相同的cookie吗。在什么情况下这是正确的


注意:我以Pyramid(Python)程序员的身份提出这个问题,因为Pyramid实现在每个响应上无条件地发送会话cookie。()

通常,您不需要在每个响应上设置cookie。浏览器已经有cookie,只要cookie仍然有效,它就会继续发送到服务器

具体地说,在每个请求上都设置一个金字塔会话cookie,因为它包含一个签名和时间戳的秘密,该秘密可以与正常的cookie过期机制分开过期。通过在每次Pyramid更新嵌入的时间戳时设置一个新cookie来显示会话仍然是新的。换句话说,cookie集每次都是不同的。

对于会话cookie(如浏览器会话cookie,客户端关闭后将立即销毁),我可能不会这样做。这样重复你自己是对带宽的浪费(虽然是一小部分)

>给你一块饼干。
<谢谢
>不,真的,吃块饼干。
<那不是同一块饼干吗?
>说真的,吃这个饼干。
请停下来

只有在更改cookie的某些内容时,才有意义再次发送cookie。因此,对于具有绝对到期时间的cookie,您可能希望每隔一段时间更新该到期时间。显然,如果您正在更改存储在cookie中的值,您还将再次发送头

我通常是一名PHP开发人员,PHP本机会话也会这样做(每次无条件发送)。我认为这样做的原因是a)它更容易实现,b)它试图说明用户代理的行为不正常,可能忽略了过期时间或未能将cookie写入客户端持久性存储或


如果每个人都正确地实现了2109/2965,那么绝对没有理由多次设置语义相同的cookie。但是,如果人们真的阅读标准,开发人员的生活难道不会很枯燥吗?

是的,你说得对!金字塔中的默认会话实现将访问时间存储在cookie中——它需要在每次请求时更新访问时间,从而在每次响应时重置cookie。而且,替代实现喜欢并且不是无条件地这样做。你说得对。