欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

django的ajax_cookie和session

发布时间:2024/1/23 编程问答 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 django的ajax_cookie和session 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、Cookie与session

由于http请求是无状态的,无法记录用户的身份,所以需要有一种机制来长期的保存和校验用户的身份,最先出现的是cookie。
Cookie:是由服务器下发到用户(浏览器)本地的用于校验身份的数据。Cookie工作的机制类似上面的通关文牒:
用户第一次请求服务器
服务器根据用户提交的数据来识别用户身份,然后下发对应的cookie
用户第二次携带cookie请求服务器
服务器根据cookie为用户提供服务。

由于cookie是由服务器下发到用户本地的,所以导致了一些安全性问题:
1、用户可以拒收cookie
2、用户可以仿造cookie
Session就是为了解决cookie的安全性问题提出的一种新的回话控制技术。
Session需要结合cookie进行使用。
Session存放在服务器的数据库当中
django自带session库

使用session之后,不会再次直接向服务器下发cookie身份信息,下发的是一个随机不重复的session_id,用户携带session_id访问服务器,服务器通过session_id判断身份,下发cookie。再次校验,校验:
1、session和cookie对应
2、Session是否过期
3、Cookie是否合法
Cookie和session的比对:
Cookie放在用户本地,session存在服务器数据库当中
校验cookie速度比较快,但安全性不够好
校验session速度比较慢,安全性相对好,但未从根本上解决安全问题
Cookie的基本操作:
路由配置

from django.contrib import admin from django.urls import path,re_path from FormApp.views import * urlpatterns = [path('admin/', admin.site.urls),path('fe/',formExample),path('de/',delete_user), path('re/',requestExample), path('fp/',formpost), path('form/',djangoform), path('ag/',ajax_get), path('agd/',ajax_get_data), path('ap/',ajax_post), path('apd/',ajax_post_data), path('sc/',setCookie), path('del/',delCookie), path('index/',index), path('p404/',tishi), ]

设置cookie

def setCookie(request):response=render(request,"setCookie.html")response.set_cookie("username","123")return response

查询cookie下发

请求携带cookie

cookie参数设置


获取校验cookie

def index(request):cookies=request.COOKIES#所有请求携带的cookie,是一个标准的字典对象username=cookies.get("username")#获取具体cookieif username=="123":#开始校验cookiesreturn render_to_response("index.html",locals())else:#注释的写法有问题,要避免这样写,使用indexd的url,访问到了setCookie页面#所以在这里的需求是跳转路由,而不是指向页面#return render_to_response("setCookie.html,locals())#所以我们使用重定向方法referer=request.META.get("HTTP_REFERER")#获取路由来源if referer:#如果存在来源url=refererelse:url="/sc/"return HttpResponseRedirect(url)

删除cookie

def delCookie(request):response=HttpResponseRedirect("/p404/")response.delete_cookie("username")return response def tishi(request):return HttpResponse("页面跑偏了,找不到页面可以找bug")#return render_to_response("p404.html")

index.html

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> Cookie <a href="/sc/" >存在cookie</a> <a href="/del/"> 删除cookie</a></body> </html>

p404.html

`<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> 页面找不到了 </body> </html>`

session配置

总结

以上是生活随笔为你收集整理的django的ajax_cookie和session的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。