发布网友 发布时间:2024-10-03 13:01
共1个回答
热心网友 时间:2024-11-07 01:33
导读:本篇文章首席CTO笔记来给大家介绍有关django如何获取用户cookies的相关内容,希望对大家有所帮助,一起来看看吧。
djangorequest判断是否有cookie使用模板的情况和不使用模板的情况都做了测试,可以向浏览器设置cookies,在客户端可以用javascript取出来:
程序代码
functiongetCookie(c_name)
{
if(document.cookie.length0)
{
c_start=document.cookie.indexOf(c_name+"=")
djangocookie在html里怎么读
浏览器的开发者在很早的时候就已经意识到,HTTP's的无状态会对Web开发者带来很大的问题,于是(cookies)应运而生。cookies是浏览器为Web服务器存储的一小段信息。每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies
来看看它是怎么工作的。当你打开浏览器并访问google.com,你的浏览器会给Google发送一个HTTP请求,起始部分就象这样:
GET/HTTP/1.1
Host:google.com
...
当Google响应时,HTTP的响应是这样的:
HTTP/1.1200OK
Content-Type:text/html
Set-Cookie:PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671;
expires=Sun,17-Jan-203819:14:07GMT;
path=/;domain=.google.com
Server:GWS/2.1
...
注意Set-Cookie的头部。你的浏览器会存储cookie值(PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671),而且每次访问google站点都会回送这个cookie值。因此当你下次访问Google时,你的浏览器会发送像这样的请求:
GET/HTTP/1.1
Host:google.com
Cookie:PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671
...
于是Cookies的值会告诉Google,你就是早些时候访问过Google网站的人。这个值可能是数据库中存储用户信息的key,可以用它在页面上显示你的用户名。Google会(以及目前)使用它在网页上显示你账号的用户名。
存取Cookies
在Django中处理持久化,大部分时候你会更愿意用高层些的session和/或后面要讨论的user框架。但在此之前,我们需要停下来在底层看看如何读写cookies。这会帮助你理解本章节后面要讨论的工具是如何工作的,而且如果你需要自己操作cookies,这也会有所帮助。
读取已经设置好的cookies极其简单。每一个``HttpRequest``对象都有一个``COOKIES``对象,该对象的行为类似一个字典,你可以使用它读取任何浏览器发送给视图(view)的cookies。
defshow_color(request):
if"favorite_color"inrequest.COOKIES:
returnHttpResponse("Yourfavoritecoloris%s"%request.COOKIES["favorite_color"])
else:
returnHttpResponse("Youdon'thaveafavoritecolor.")
写cookies稍微复杂点。你需要使用HttpResponse对象的set_cookie()方法。这儿有个基于GET参数来设置favorite_color
cookie的例子:
defset_color(request):
if"favorite_color"inrequest.GET:
#CreateanHttpResponseobject...
response=HttpResponse("Yourfavoritecolorisnow%s"%request.GET["favorite_color"])
#...andsetacookieontheresponse
response.set_cookie("favorite_color",
request.GET["favorite_color"])
returnresponse
else:
returnHttpResponse("Youdidn'tgiveafavoritecolor.")
你可以给response.set_cookie()传递一些可选的参数来控制cookie的行为
好坏参半的Cookies
也许你已经注意到了,cookies的工作方式可能导致的问题。让我们看一下其中一些比较重要的问题:
cookie的存储是自愿的,一个客户端不一定要去接受或存储cookie。事实上,所有的浏览器都让用户自己控制是否接受cookies。如果你想知道cookies对于Web应用有多重要,你可以试着打开这个浏览器的选项:
尽管cookies广为使用,但仍被认为是不可靠的的。这意味着,开发者使用cookies之前必须检查用户是否可以接收cookie。
Cookie(特别是那些没通过HTTPS传输的)是非常不安全的。因为HTTP数据是以明文发送的,所以特别容易受到嗅探攻击。也就是说,嗅探攻击者可以在网络中拦截并读取cookies,因此你要绝对避免在cookies中存储敏感信息。这就意味着您不应该使用cookie来在存储任何敏感信息。
还有一种被称为”中间人”的攻击更阴险,攻击者拦截一个cookie并将其用于另一个用户。第19章将深入讨论这种攻击的本质以及如何避免。
即使从预想中的接收者返回的cookie也是不安全的。在大多数浏览器中您可以非常容易地修改cookies中的信息。有经验的用户甚至可以通过像mechanize()这样的工具手工构造一个HTTP请求。
因此不能在cookies中存储可能会被篡改的敏感数据。在cookies中存储IsLoggedIn=1,以标识用户已经登录。犯这类错误的站点数量多的令人难以置信;绕过这些网站的安全系统也是易如反掌。
djangoforms怎么获取登录用户Django获取登陆用户的手段就是request.user。
如果你想传给form字段,可以先做一个model的object实例,把request.user传给这个object实例的相关字段,然后把这个实例传给forms实例即可。
Django-cookie无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。
比如我们在没引入cookie验证之前,我们输入进入页面登录操作,理论上我们必须完成登录后才能进行后续操作,如果服务器不告诉浏览器就是把键值对交给浏览器,让浏览器与服务器建立关联。那么我们输入同样也可以完成与页面的交互工作,从而失去了登录操作的意义。
一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的。
状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生。
Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。
cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了。
我们使用Chrome浏览器,打开开发者工具。
设置cookie,rep是获取响应的对象
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密盐',max_age=None,...)
获取Cookie
request.COOKIES['key']
request.get_signed_cookie(key,default=RAISE_ERROR,salt='',max_age=None)
为了进一步理解cookie的用法,我们这边由浅到深举个案例
进入页面登录操作,登录成功后页面跳转去并提示已登录成功,同时将cookie以键值对的方式交付给浏览器,当输入时浏览器会判断如果有cookie的话就返回提示已登录成功页面,否则让用户重新登录,从而实现了login页面与home页面的关联。
由下图可知时,因为没找到cookie,所以就跳转到页面。正确登录后就返回到home页面
在实务中我们登录后要操作页面不限于home页面,还有很多页面,由于实现的功能是一样的(就是把多页通过cookie取得关联)这时我们需要做个函数装饰器,当调用defhome(resquest)时第一时间调用函数装饰器里对应的函数。
第一步:函数装饰器
第二步:
我们输入时,因为浏览器找不到cookies,所以按照redirect('/login/?next={}'.format(next_url)),跳去
。
结语:以上就是首席CTO笔记为大家介绍的关于django如何获取用户cookies的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。
热心网友 时间:2024-11-07 01:33
导读:本篇文章首席CTO笔记来给大家介绍有关django如何获取用户cookies的相关内容,希望对大家有所帮助,一起来看看吧。
djangorequest判断是否有cookie使用模板的情况和不使用模板的情况都做了测试,可以向浏览器设置cookies,在客户端可以用javascript取出来:
程序代码
functiongetCookie(c_name)
{
if(document.cookie.length0)
{
c_start=document.cookie.indexOf(c_name+"=")
djangocookie在html里怎么读
浏览器的开发者在很早的时候就已经意识到,HTTP's的无状态会对Web开发者带来很大的问题,于是(cookies)应运而生。cookies是浏览器为Web服务器存储的一小段信息。每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies
来看看它是怎么工作的。当你打开浏览器并访问google.com,你的浏览器会给Google发送一个HTTP请求,起始部分就象这样:
GET/HTTP/1.1
Host:google.com
...
当Google响应时,HTTP的响应是这样的:
HTTP/1.1200OK
Content-Type:text/html
Set-Cookie:PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671;
expires=Sun,17-Jan-203819:14:07GMT;
path=/;domain=.google.com
Server:GWS/2.1
...
注意Set-Cookie的头部。你的浏览器会存储cookie值(PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671),而且每次访问google站点都会回送这个cookie值。因此当你下次访问Google时,你的浏览器会发送像这样的请求:
GET/HTTP/1.1
Host:google.com
Cookie:PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671
...
于是Cookies的值会告诉Google,你就是早些时候访问过Google网站的人。这个值可能是数据库中存储用户信息的key,可以用它在页面上显示你的用户名。Google会(以及目前)使用它在网页上显示你账号的用户名。
存取Cookies
在Django中处理持久化,大部分时候你会更愿意用高层些的session和/或后面要讨论的user框架。但在此之前,我们需要停下来在底层看看如何读写cookies。这会帮助你理解本章节后面要讨论的工具是如何工作的,而且如果你需要自己操作cookies,这也会有所帮助。
读取已经设置好的cookies极其简单。每一个``HttpRequest``对象都有一个``COOKIES``对象,该对象的行为类似一个字典,你可以使用它读取任何浏览器发送给视图(view)的cookies。
defshow_color(request):
if"favorite_color"inrequest.COOKIES:
returnHttpResponse("Yourfavoritecoloris%s"%request.COOKIES["favorite_color"])
else:
returnHttpResponse("Youdon'thaveafavoritecolor.")
写cookies稍微复杂点。你需要使用HttpResponse对象的set_cookie()方法。这儿有个基于GET参数来设置favorite_color
cookie的例子:
defset_color(request):
if"favorite_color"inrequest.GET:
#CreateanHttpResponseobject...
response=HttpResponse("Yourfavoritecolorisnow%s"%request.GET["favorite_color"])
#...andsetacookieontheresponse
response.set_cookie("favorite_color",
request.GET["favorite_color"])
returnresponse
else:
returnHttpResponse("Youdidn'tgiveafavoritecolor.")
你可以给response.set_cookie()传递一些可选的参数来控制cookie的行为
好坏参半的Cookies
也许你已经注意到了,cookies的工作方式可能导致的问题。让我们看一下其中一些比较重要的问题:
cookie的存储是自愿的,一个客户端不一定要去接受或存储cookie。事实上,所有的浏览器都让用户自己控制是否接受cookies。如果你想知道cookies对于Web应用有多重要,你可以试着打开这个浏览器的选项:
尽管cookies广为使用,但仍被认为是不可靠的的。这意味着,开发者使用cookies之前必须检查用户是否可以接收cookie。
Cookie(特别是那些没通过HTTPS传输的)是非常不安全的。因为HTTP数据是以明文发送的,所以特别容易受到嗅探攻击。也就是说,嗅探攻击者可以在网络中拦截并读取cookies,因此你要绝对避免在cookies中存储敏感信息。这就意味着您不应该使用cookie来在存储任何敏感信息。
还有一种被称为”中间人”的攻击更阴险,攻击者拦截一个cookie并将其用于另一个用户。第19章将深入讨论这种攻击的本质以及如何避免。
即使从预想中的接收者返回的cookie也是不安全的。在大多数浏览器中您可以非常容易地修改cookies中的信息。有经验的用户甚至可以通过像mechanize()这样的工具手工构造一个HTTP请求。
因此不能在cookies中存储可能会被篡改的敏感数据。在cookies中存储IsLoggedIn=1,以标识用户已经登录。犯这类错误的站点数量多的令人难以置信;绕过这些网站的安全系统也是易如反掌。
djangoforms怎么获取登录用户Django获取登陆用户的手段就是request.user。
如果你想传给form字段,可以先做一个model的object实例,把request.user传给这个object实例的相关字段,然后把这个实例传给forms实例即可。
Django-cookie无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。
比如我们在没引入cookie验证之前,我们输入进入页面登录操作,理论上我们必须完成登录后才能进行后续操作,如果服务器不告诉浏览器就是把键值对交给浏览器,让浏览器与服务器建立关联。那么我们输入同样也可以完成与页面的交互工作,从而失去了登录操作的意义。
一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的。
状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生。
Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。
cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了。
我们使用Chrome浏览器,打开开发者工具。
设置cookie,rep是获取响应的对象
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密盐',max_age=None,...)
获取Cookie
request.COOKIES['key']
request.get_signed_cookie(key,default=RAISE_ERROR,salt='',max_age=None)
为了进一步理解cookie的用法,我们这边由浅到深举个案例
进入页面登录操作,登录成功后页面跳转去并提示已登录成功,同时将cookie以键值对的方式交付给浏览器,当输入时浏览器会判断如果有cookie的话就返回提示已登录成功页面,否则让用户重新登录,从而实现了login页面与home页面的关联。
由下图可知时,因为没找到cookie,所以就跳转到页面。正确登录后就返回到home页面
在实务中我们登录后要操作页面不限于home页面,还有很多页面,由于实现的功能是一样的(就是把多页通过cookie取得关联)这时我们需要做个函数装饰器,当调用defhome(resquest)时第一时间调用函数装饰器里对应的函数。
第一步:函数装饰器
第二步:
我们输入时,因为浏览器找不到cookies,所以按照redirect('/login/?next={}'.format(next_url)),跳去
。
结语:以上就是首席CTO笔记为大家介绍的关于django如何获取用户cookies的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。
热心网友 时间:2024-11-07 01:33
导读:本篇文章首席CTO笔记来给大家介绍有关django如何获取用户cookies的相关内容,希望对大家有所帮助,一起来看看吧。
djangorequest判断是否有cookie使用模板的情况和不使用模板的情况都做了测试,可以向浏览器设置cookies,在客户端可以用javascript取出来:
程序代码
functiongetCookie(c_name)
{
if(document.cookie.length0)
{
c_start=document.cookie.indexOf(c_name+"=")
djangocookie在html里怎么读
浏览器的开发者在很早的时候就已经意识到,HTTP's的无状态会对Web开发者带来很大的问题,于是(cookies)应运而生。cookies是浏览器为Web服务器存储的一小段信息。每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies
来看看它是怎么工作的。当你打开浏览器并访问google.com,你的浏览器会给Google发送一个HTTP请求,起始部分就象这样:
GET/HTTP/1.1
Host:google.com
...
当Google响应时,HTTP的响应是这样的:
HTTP/1.1200OK
Content-Type:text/html
Set-Cookie:PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671;
expires=Sun,17-Jan-203819:14:07GMT;
path=/;domain=.google.com
Server:GWS/2.1
...
注意Set-Cookie的头部。你的浏览器会存储cookie值(PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671),而且每次访问google站点都会回送这个cookie值。因此当你下次访问Google时,你的浏览器会发送像这样的请求:
GET/HTTP/1.1
Host:google.com
Cookie:PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671
...
于是Cookies的值会告诉Google,你就是早些时候访问过Google网站的人。这个值可能是数据库中存储用户信息的key,可以用它在页面上显示你的用户名。Google会(以及目前)使用它在网页上显示你账号的用户名。
存取Cookies
在Django中处理持久化,大部分时候你会更愿意用高层些的session和/或后面要讨论的user框架。但在此之前,我们需要停下来在底层看看如何读写cookies。这会帮助你理解本章节后面要讨论的工具是如何工作的,而且如果你需要自己操作cookies,这也会有所帮助。
读取已经设置好的cookies极其简单。每一个``HttpRequest``对象都有一个``COOKIES``对象,该对象的行为类似一个字典,你可以使用它读取任何浏览器发送给视图(view)的cookies。
defshow_color(request):
if"favorite_color"inrequest.COOKIES:
returnHttpResponse("Yourfavoritecoloris%s"%request.COOKIES["favorite_color"])
else:
returnHttpResponse("Youdon'thaveafavoritecolor.")
写cookies稍微复杂点。你需要使用HttpResponse对象的set_cookie()方法。这儿有个基于GET参数来设置favorite_color
cookie的例子:
defset_color(request):
if"favorite_color"inrequest.GET:
#CreateanHttpResponseobject...
response=HttpResponse("Yourfavoritecolorisnow%s"%request.GET["favorite_color"])
#...andsetacookieontheresponse
response.set_cookie("favorite_color",
request.GET["favorite_color"])
returnresponse
else:
returnHttpResponse("Youdidn'tgiveafavoritecolor.")
你可以给response.set_cookie()传递一些可选的参数来控制cookie的行为
好坏参半的Cookies
也许你已经注意到了,cookies的工作方式可能导致的问题。让我们看一下其中一些比较重要的问题:
cookie的存储是自愿的,一个客户端不一定要去接受或存储cookie。事实上,所有的浏览器都让用户自己控制是否接受cookies。如果你想知道cookies对于Web应用有多重要,你可以试着打开这个浏览器的选项:
尽管cookies广为使用,但仍被认为是不可靠的的。这意味着,开发者使用cookies之前必须检查用户是否可以接收cookie。
Cookie(特别是那些没通过HTTPS传输的)是非常不安全的。因为HTTP数据是以明文发送的,所以特别容易受到嗅探攻击。也就是说,嗅探攻击者可以在网络中拦截并读取cookies,因此你要绝对避免在cookies中存储敏感信息。这就意味着您不应该使用cookie来在存储任何敏感信息。
还有一种被称为”中间人”的攻击更阴险,攻击者拦截一个cookie并将其用于另一个用户。第19章将深入讨论这种攻击的本质以及如何避免。
即使从预想中的接收者返回的cookie也是不安全的。在大多数浏览器中您可以非常容易地修改cookies中的信息。有经验的用户甚至可以通过像mechanize()这样的工具手工构造一个HTTP请求。
因此不能在cookies中存储可能会被篡改的敏感数据。在cookies中存储IsLoggedIn=1,以标识用户已经登录。犯这类错误的站点数量多的令人难以置信;绕过这些网站的安全系统也是易如反掌。
djangoforms怎么获取登录用户Django获取登陆用户的手段就是request.user。
如果你想传给form字段,可以先做一个model的object实例,把request.user传给这个object实例的相关字段,然后把这个实例传给forms实例即可。
Django-cookie无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。
比如我们在没引入cookie验证之前,我们输入进入页面登录操作,理论上我们必须完成登录后才能进行后续操作,如果服务器不告诉浏览器就是把键值对交给浏览器,让浏览器与服务器建立关联。那么我们输入同样也可以完成与页面的交互工作,从而失去了登录操作的意义。
一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的。
状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生。
Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。
cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了。
我们使用Chrome浏览器,打开开发者工具。
设置cookie,rep是获取响应的对象
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密盐',max_age=None,...)
获取Cookie
request.COOKIES['key']
request.get_signed_cookie(key,default=RAISE_ERROR,salt='',max_age=None)
为了进一步理解cookie的用法,我们这边由浅到深举个案例
进入页面登录操作,登录成功后页面跳转去并提示已登录成功,同时将cookie以键值对的方式交付给浏览器,当输入时浏览器会判断如果有cookie的话就返回提示已登录成功页面,否则让用户重新登录,从而实现了login页面与home页面的关联。
由下图可知时,因为没找到cookie,所以就跳转到页面。正确登录后就返回到home页面
在实务中我们登录后要操作页面不限于home页面,还有很多页面,由于实现的功能是一样的(就是把多页通过cookie取得关联)这时我们需要做个函数装饰器,当调用defhome(resquest)时第一时间调用函数装饰器里对应的函数。
第一步:函数装饰器
第二步:
我们输入时,因为浏览器找不到cookies,所以按照redirect('/login/?next={}'.format(next_url)),跳去
。
结语:以上就是首席CTO笔记为大家介绍的关于django如何获取用户cookies的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。