🌈据说,看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。
前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:个人记账分析系统 ,专门记录制作过程,每天进步一点点~
想看往期历史文章,可以浏览此博文: 历史文章目录
,后续所有文章发布都会同步更新此博文~
跨域问题
Django
在前端发送 POST
请求的时候会带上 csrf_token
,但这是由模板自动渲染的,所以这里先尝试跨域使用模板。
一开始使用 vue.js
,默认端口 3000
,如果使用 iframe
加载 Django
模板页面的话,就会触发跨域问题:
要解决这个问题找遍互联网,发现要在设置里加上:
X_FRAME_OPTIONS = 'ALLOW-FROM http://127.0.0.1:3000'
CSRF_TRUSTED_ORIGINS = ['127.0.0.1:3000']
CSRF_COOKIE_SAMESITE = None
CSRF_COOKIE_NAME = 'csrf'
此时页面能正常显示了,其中 X_FRAME_OPTIONS
选项的 ALLOW-FROM http://127.0.0.1:3000
属于过时语法,不会生效,但肯定不会被设置成默认的 DENY
属性,当然这里也不能设置他唯二有用的属性 SAMEORIGIN
因为这只是让同源可以加载在 iframe
里,我们这里端口不一样,不同源,你哪怕值为空也好。
但是这样处理后 cookie
就只能限制于 iframe
里了,所以最终决定整个项目还是使用前后端完全分离的形式,单独获取 csrf_token
。
还发现一个问题,Django
处理 csrf_token
的时候,本地域名必须是 127.0.0.1
,而不能是 localhost
,换句话说,Django
处理的时候必须经过网卡( localhost
是不经过网卡的)。
给 Django
发送 POST
请求时候,Django
的返回:
解决跨域问题
简单点解决:
from django.views.decorators