首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

禁止(未设置CSRF cookie。)从Vue.js向Django发送POST/DELETE请求时

禁止(未设置CSRF cookie。)从Vue.js向Django发送POST/DELETE请求时,这是由于Django的CSRF保护机制导致的。CSRF(Cross-Site Request Forgery)跨站请求伪造是一种常见的网络攻击方式,攻击者通过伪造用户的请求来执行恶意操作。

为了防止CSRF攻击,Django引入了CSRF保护机制。该机制要求在发送POST、DELETE等修改数据的请求时,需要在请求中包含一个CSRF token,以验证请求的合法性。而Vue.js作为前端框架,发送请求时默认不会自动携带CSRF token,因此会触发Django的CSRF保护机制,导致请求被拒绝。

解决这个问题的方法有两种:

  1. 在Vue.js中手动添加CSRF token:可以通过在Vue.js的请求中手动添加CSRF token来解决。首先,在Django的模板中,使用{% csrf_token %}标签生成CSRF token,并将其存储在Vue.js的全局变量或组件中。然后,在发送POST、DELETE请求时,将CSRF token添加到请求的header中,例如:
代码语言:txt
复制
axios.defaults.headers.common['X-CSRFToken'] = csrfToken;

这样就能够在请求中携带CSRF token,通过Django的CSRF保护机制。

  1. 关闭Django的CSRF保护机制:如果你确定在特定的场景下不需要CSRF保护,可以选择关闭Django的CSRF保护机制。在Django的视图函数或类中,可以使用@csrf_exempt装饰器来排除CSRF保护,例如:
代码语言:txt
复制
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def my_view(request):
    # 处理请求的代码

这样就可以绕过Django的CSRF保护机制,但需要注意潜在的安全风险。

总结起来,解决禁止(未设置CSRF cookie。)从Vue.js向Django发送POST/DELETE请求时的问题,可以手动添加CSRF token或关闭Django的CSRF保护机制。具体选择哪种方法取决于你的需求和安全考虑。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云主页:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb-for-mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(Tencent Blockchain):https://cloud.tencent.com/product/tencent-blockchain
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Security---跨域访问和跨站攻击问题详解

所谓同源策略就是在浏览器端出于安全考量,服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否则访问将被禁止,该访问也就被称为跨域访问。...长话短说,同源策略就是服务端发起请求的时候,以下三项必须与当前浏览器应用一致:域名、端口、协议。用白话说:就是你的应用发送请求不能访问别人的资源,否则浏览器就会限制你。...但是你会发现在跨域请求的情况下,我们的POSTDELETE、PUT等HTTP请求方式失效了。...至此,我们生成了CSRF token保存在了cookies中,浏览器服务端发送的HTTP请求,都要将CSRF token带上,服务端校验通过才能正确的响应。...---- 前端请求携带CSRF Token的方式 默认情况下,CookieCsrfTokenRepository会cookies中写入一个key为XSRF-TOKEN的cookie

1.4K11

10.Django基础八之cookie和session

双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会10086发出多个请求,那么这多个请求都在一个会话中。...也就是说在你使用IE访问服务器,服务器会把Cookie发给IE,然后由IE保存起来,当你在使用FireFox访问服务器,不可能把IE保存的Cookie发送给服务器。...cookie设置中文的编码问题:cookie设置不允许出现中文。...备注:         csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。         ...csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。

81820

Cookie、Session

什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器浏览器会自动携带这些键值对,以便服务器提取有用信息。...Cookie的原理 Cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了。...login/") rep.delete_cookie("user") # 删除用户浏览器上之前设置的usercookie值 return rep Session Session的由来...备注: csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。...csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。

97520

Django+Vue项目学习第五篇:vue+django发送post请求,解决csrf认证问题

本篇介绍如何在vue端django发送post请求,以及django处理post请求的方式 这次要实现的功能是:点击【身份证ID】生成指定数量的身份证号 1....,得到如下结果,仍然报错了 这次的错误是CSRF验证失败 通过查资料得知,这个是django特意加的一个csrf认证,当发送post请求服务器提交数据都要做这个验证,很蛋疼~~ 为了解决这个问题...提取cookie中的csrftoken 这个cookie应该是django服务器客户端发送的,通过它来完成csrf验证,post请求必须拿到cookie中的csrftoken然后跟着请求一起发送才行!...:django配置好跨域允许携带cookie后,并且axios也配置好允许携带cookie发送post请求Django会自动发给客户端一个cookie 我们需要把这个cookie中的csrftoken...拿出来再赋给请求头中的 X-CSRFToken,这样才能通过csrf认证 打开chrom浏览器控制台,切换到Application,找到如下位置 发post请求,这里会自动多出一个cookie

3.6K20

CSRF 原理与防御案例分析

我们知道,当我们使用 img 等标签,通过设置标签的 src 等属性引入外部资源,是可以被浏览器认为是合法的跨域请求,也就是说是可以带上 Cookie 访问的。...当 b.com 的用户在 cookie 为过期的情况下访问 a.com,此时浏览器会 b.com 发送一个指向http://b.com/del?...这个就是 DjangoCSRF 防御机制,当我们发送 POST 请求 Django 会自动检测 CSRF_Token 值是否正确。...%}这串代码被 Django 解析成了一个隐藏的input标签,其中的值为 token 值,当我们发送请求必须带上这个值。...只有这样 Django 才会接受 POST 请求来的数据,否则返回错误,并且原登陆页面的 CSRF_Token 重新生成,上一个进行销毁,很大程度上防御住了 POST 请求CSRF。 ?

2.3K30

Django跨域】一篇文章彻底解决Django跨域问题!

换言之,它允许浏览器声明了 CORS 的跨域服务器,发出 XMLHttpReuest 请求,从而克服 Ajax 只能同源使用的限制。在我们的django框架中就是利用CORS来解决跨域请求的问题。...', # 'django.middleware.csrf.CsrfViewMiddleware', 如果你的项目没有考虑到 csrf 网络攻击,可注释掉,否则会报错没有传递 csrf cookie...# 配置允许的请求方式 CORS_ALLOW_METHODS = [ '*', # * 表示允许全部请求头 'GET', 'POST', 'PUT', 'PATCH...secure:HTTPS传输设置为true,默认为false httponly:值应用于http传输,这时JavaScript无法获取 SameSite属性详解 Lax Cookies 允许与顶级导航一起发送...Strict Cookies 只会在第一方上下文中发送,不会与第三方网站发起的请求一起发送。 None Cookie 将在所有上下文中发送,即允许跨站发送

4.4K31

Django对中间件的调用思想、csrf中间件详细介绍、Django settings源码剖析、Django的Auth模块

服务端的角度来解决这个问题的思路就是如果每次服务端都能识别出来向我提交请求的是我自己的页面还是别人的页面,那么钓鱼网站就无法在用户访问服务器的过程中伪装成服务端网页给服务端发送转账请求了。...Django csrf中间件 当用户访问有Django csrf中间件的服务端Django csrf中间件会给用户的get请求的页面携带一个随机字符串,当用户发送post请求时会校验用户的随机字符串,...如果如果校验不通过则直接报403错误,禁止用户提交post请求。...请求的通常是form表单和ajax请求,Djangocsrf中间件在两种post请求中的使用方式是不同的,具体使用方法如下: form表单 我们只需在form表单中添加{% csrf_token %}。...当调用该函数,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。

85210

Cookie、Session登陆验证相关介绍和用法

login/") rep.delete_cookie("user") # 删除用户浏览器上之前设置的usercookie值 return rep 登录认证示例: 需要知道几点 一共有三次请求...http://127.0.0.1:8080/login post请求 user pasw         第一次请求:url:http://127.0.0.1:8080/main post请求 携带着cookie...这种方式下,Session在保存到缓存的同时还会被保存到数据库中,当Django在缓存中找不到Session,会数据库中找到。第二种方式会有一点点性能开销,但是安全性和冗余性更好。 3....return redirect("/index/") 中间件CSRF Token CSRF Token相关装饰器在CBV只能加到dispatch方法上 备注: csrf_protect,为当前函数强制设置防跨站请求伪造功能...csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。

2.7K71

AJAX使用说明书

AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新;(这一特点给用户的感受是在不知不觉中完成请求和响应过程) AJAX优点 AJAX使用JavaScript技术服务器发送异步请求; AJAX请求无须刷新整个页面...注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。 3.timeout 要求为Number类型的参数,设置请求超时时间(毫秒)。...5.cache 要求为Boolean类型的参数,默认为true(当dataType为Script,默认为false),设置false将不会浏览器缓存中加载请求信息。...AJAX请求如何设置csrf_token 方式1 通过获取隐藏的input标签中的csrfmiddlewaretoken值,放置在data中发送。...')}, // Cookiecsrf_token,并设置ajax请求头 data: {"username": "fuyong", "password": 123456}, success:

2.7K70

CSRF攻击原理场景

那么因为在发送请求的时候,浏览器会自动的把cookie发送给对应的服务器,这时候相应的服务器(比如ICBC网站),就不知道这个请求是伪造的,就被欺骗过去了。...从而达到在用户不知情的情况下,给某个服务器发送了一个请求(比如转账)。防御CSRF攻击:CSRF攻击的要点就是在服务器发送请求的时候,相应的cookie会自动的发送给对应的服务器。...以后给服务器发送请求的时候,必须在body中以及cookie中都携带csrf_token,服务器只有检测到cookie中的csrf_token和body中的csrf_token都相同,才认为这个请求是正常的...我们可以返回的cookie中提取csrf token,再设置进去。...也就是说可以发送跨域请求

92840

Django请求的生命周期

当用户在浏览器中输入url,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中. 2. url经过Django...nid=user 这个url中, 客户端通过get请求服务端发送的nid=user的请求,服务端可以通过request.GET.get("nid")的方式取得nid数据 客户端还可以通过post的方式服务端请求数据...当客户端以post的方式服务端请求数据的时候,请求的数据包含在请求体里,这时服务端就使用request.POST的方式取得客户端想要取得的数据 需要注意的是,request.POST是把请求体的数据转换一个字典...Django请求生命周期之响应内容 http提交数据的方式有"post","get","put","patch","delete","head","options","trace"....POST请求可能会导致新的资源的建立和/或已有资源的修改。 4 PUT 客户端服务器传送的数据取代指定的文档的内容。 5 DELETE 请求服务器删除指定的页面。

2.7K100

Django-中间件-csrf扩展请求伪造拦截中间件-Django Auth模块使用-效仿 django 中间件配置实现功能插拔式效果-09

csrf 中间件 跨站请求伪造 post请求提交数据通过 csrf 校验 form 表单 ajax 发送 csrf 装饰器相关 注释掉 csrf 中间件 单功能取消 csrf 校验:csrf_exempt...post 请求都会写上先去 settings.py 里把 csrf 这个中间件暂时注释掉了 django 请求生命周期 ***** 经过 中间件 之后才能进入 urls.py(再 views.py ....中间件 跨站请求伪造 钓鱼网站 原理:写了一个一模一样的网站,一个隐藏框,发送往隐藏当做收钱方 问题:如何区分当前用户朝我们网站发送请求页面是不是我们本网站给的 防止思路 网站会给返回给用户的 form...不同浏览器绝对不一样 post请求提交数据通过 csrf 校验 form 表单 form 表单发送 post 请求的时候,需要你做的是写一段代码 {% csrf_token %} 即可,不需要注释 csrf...@csrf_protect 注释掉 csrf 中间件 单功能取消 csrf 校验:csrf_exempt FBV from django.views.decorators.csrf import

1.4K50

前端网络安全 常见面试题速查

Cross-site request forgery(跨站请求伪造):攻击者诱导受害者进入第三方网站,在第三方网站中,被攻击网站发送跨站请求。...# 典型流程 受害者登录 a.com,并保留了登录凭证(Cookie) 攻击者引诱受害者访问了 b.com b.com a.com 发送一个请求:a.com/atc=xx,浏览器会默认携带 a.com...提交要求附加本域才能获取的信息 CSRF Token 双重 Cookie 验证 同源检测 禁止外域(或者不受信任的域名)发起请求 使用 Origin Header 确定来源域名:在部分与...Ajax 和表单请求携带一个 Cookie 中的值 流程: 在用户访问网站页面请求域名下注入一个 Cookie,内容为随机字符串(如csrfcookie=v8g9e4ksfhw) 在前端向后端发起请求...一般过程: 客户端发送请求到服务端,请求被中间人截获 服务器客户端发送公钥 中间人截获公钥,保留在自己手上。

63132

cookie、session、分页

1、什么是cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器浏览器会自动携带这些键值对,以便服务器提取有用信息。...2、cookie的原理 cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是“谁”了..."/login/") rep.delete_cookie("user") # 删除用户浏览器上之前设置的usercookie值 return rep ?...备注: csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。...csrf_exempt,取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。

2.1K10

密码学系列之:csrf跨站点请求伪造

CSRF的特点 在CSRF的恶意攻击中,攻击者的目标是让被攻击者在不知不觉中有权限访问的网站提交恶意的web请求。...CSRF攻击利用了此属性,因为浏览器发出的任何Web请求都将自动包含受害者登录网站创建的任何cookie(包括会话cookie和其他cookie)。...如果以其他任何格式(JSON,XML)发送数据,标准方法是使用XMLHttpRequest发出POST请求,并通过同源策略(SOP)和跨域资源共享(CORS)防止CSRF攻击。...SameSite cookie attribute 当服务器设置cookie,可以包含一个附加的“ SameSite”属性,指示浏览器是否将cookie附加到跨站点请求。...如果将此属性设置为“strict”,则cookie仅在相同来源的请求发送,从而使CSRF无效。 但是,这需要浏览器识别并正确实现属性,并且还要求cookie具有“Secure”标志。

2.4K20

CSRF的原理与防御 | 你想不想来一次CSRF攻击?

CSRF的防御 我们知道了CSRF攻击的原理,就可以做针对性的防御了。CSRF的防御可以两个方面考虑,一个是后台接口层做防御;另一个则是在前端做防御,这种不同源的请求,不可以带cookie。...当用户点击转账按钮,会给银行的后台发送请求请求中包含_csrf参数,如下: POST /transfer HTTP/1.1 Host: www.a-bank.com Cookie: JSESSIONID...,它完全禁止在跨站情况下,发送Cookie。...比如在一个网站中有一个链接,这个链接连接到了GitHub上,由于SameSite设置为Strict,跳转到GitHub后,GitHub总是登录状态。..."> 不发送 上面的表格就是SameSite设置为Lax的时候,Cookie发送情况。 None就是关闭SameSite属性,所有的情况下都发送Cookie

98231
领券