iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Django中Cookie设置及跨域问题处理详解
  • 243
分享到

Django中Cookie设置及跨域问题处理详解

2024-04-02 19:04:59 243人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录什么是Cookie(翻译:曲奇饼干)Cookie怎么来的为什么要用CookieCookie的特点怎么设置CookieCookie常用参数怎么获取CookieCookie跨域问题处

什么是Cookie(翻译:曲奇饼干)

Cookie是存储在浏览器中的一段纯文本信息(简单的说就是浏览器缓存),用来记录用户的使用情况并将其存储在本地设备中,当用户访问服务器时会将Cookie附带上,服务端通过读取Cookie的记录,来维持用户与服务器的会话状态。

Cookie怎么来的

Cookie是由服务器生成的,通常以键值对的格式呈现(键值由服务器端开发者自行定义),当用户通过了浏览器访问服务器时,服务器会在返回数据的时候把Cookie传给浏览器(建议不要存储敏感信息,因为浏览器可能被多人使用)。

为什么要用Cookie

Cookie是由Http服务器设置的,而HTTP协议是一种无状态协议,浏览器与服务器使用Socket套接字进行通信,当服务器将请求结果返回给浏览器之后就会关闭当前的Socket连接并释放资源,所以每次请求数据都需要建立新的连接。 Cookie的出现弥补了这个缺点,当浏览器向服务器发送请求时,会将浏览器中存储的跟网站相关的所有Cookie信息提交给网站服务器,服务器通过Cookie中的信息来验证用户身份和判断HTTP传输状态,并将符合条件的数据返回给浏览器。

Cookie的特点

Cookie是基于作用域设计的,也就是说同一域名下只能访问到当前域名下的Cookie信息,无法访问到其他域名的Cookie信息的。

怎么设置Cookie

Django可以通过HttpResponse来响应对象的set_cookie,设置好对应的视图和路由,只要通过浏览器访问该路由,浏览器就会自动获取到set_cookie值并存入到本地(当浏览器正在运行时通常都存在内存中,当浏览器关闭时通常会存入硬盘中)。

Cookie常用参数

在设置Cookie时可以多参数定义,这个可以根据自己的需求来定义,最少要有key和value,其他可省略不填,方法是:response.set_cookie('键', '值')

key:键
value:值
max_age:多久后过期,时间为秒,默认为None,临时cookie设置即关闭浏览器就消失
expires:过期时间,具体时间
path:生效路径,默认‘/'
domain:生效的域名,你绑定的域名
secure:https传输时应设置为true,默认为false
httponly:值应用于http传输,这时javascript无法获取

怎么获取Cookie

DjanGo可以通过HttpResponse请求对象的COOKIES属性来读取Cookie,方法是:request.COOKIES.get('键'),这样我们在浏览器访问路由时就能直接获取到之前设置好的Cookie了。

Cookie跨域问题处理

前面我们只是简单的进行了路由请求,那么结合到系统中来又会是怎样的呢,我把Cookie带入到项目中来(前后端分离模式),我们会发现,同样的代码在前面始终无法获取到Cookie值,这是怎么回事呢?前面有提到Cookie是基于安全域设计的,所以是不支持跨域处理的 ,那么我们怎么来实现跨域访问呢。这里我们要采用的是“跨域资源共享”,一种可以让浏览器获得访问不同源服务器指定资源的权限机制,通过它AxiOS在访问服务器时能携带着Cookie回来。

首先需要axios能够获取到Cookie,出于安全考虑浏览器默认是不支持获取跨域Cookie的,所以这里我们需要对axios设置进行下修改,将withCredentials属性设置为true,即允许浏览器设置或获取Cookie。设置方法直接在main.js中进行全局设置,axios.defaults.withCredentials = true 。

      当服务器接收到请求后,会根据自己的跨域规则,决定是否同意这次请求,而这个规则在请求设置Cookie时就要给定,这里主要要设置Access-Control-Allow-Origin和Access-Control-Allow-Credentials属性,Access-Control-Allow-Origin默认为‘*',这里需要改成前端ip,Access-Control-Allow-Credentials改为true即可。

到此这篇关于Django中Cookie设置及跨域问题处理详解的文章就介绍到这了,更多相关Django中Cookie设置及跨域内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Django中Cookie设置及跨域问题处理详解

本文链接: https://www.lsjlt.com/news/136167.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作