- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读到这两个基本上是同一回事,但每个都给我不同的错误,我不确定该去哪一个。我什至不知道如何解决这个问题。有人可以看看我的代码吗,我已经为此苦苦挣扎了两天。
我的html
<div id='notificationsLoader'>
</div>
<script>
$(document).ready(function(){
$(".notification-toggle").click(function(e){
e.preventDefault();
$.ajax({
type:"POST",
url:"{% url 'get_notifications_ajax' %}",
data: {
csrfmiddlewaretoken:"{%csrf_token%}",
},
success: function(data){
$("#notificationsLoader").html('<h3>notifications</h3>');
$(data.notifications).each(function(){
$("notificationsLoader").append(this + "<br/>")
})
console.log(data.notifications);
},
error: function(rs, e){
console.log(rs);
console.log(e);
}
})
})
})
</script>
其他html
<li><a class="notification-toggle" href="#">notification</a></li>
通知来 self 的python代码
@login_required
def get_notifications_ajax(request):
notification = Notification.objects.get(id=id)
notes =[]
for note in notifications:
notes.append(str(note))
data={
"notifications":notes
}
json_data = json.dumps(data)
return HttpResponse(json_data, content_type='application/json')
还有更多内容,但我只发布这一部分,因为我认为错误(403 和 500)是说我的服务器端错误
最佳答案
来自 Django Project Documenation :
While the above method can be used for AJAX POST requests, it has some inconveniences: you have to remember to pass the CSRF token in as POST data with every POST request. For this reason, there is an alternative method: on each XMLHttpRequest, set a custom X-CSRFToken header to the value of the CSRF token. This is often easier, because many javascript frameworks provide hooks that allow headers to be set on every request.
因此您可以将 csrftoken 值作为 X-CSRFToken
header 传递,它可以从 cookie 中获取(我已经为该需求添加了 getCookie
函数)。您可以通过使用 ajaxSetup 设置您的 ajax 请求来轻松地做到这一点。在发送之前,请参阅下面的代码:
// Source https://docs.djangoproject.com/en/1.7/ref/contrib/csrf/#ajax
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
$(".notification-toggle").click(function(e){
e.preventDefault();
var token = getCookie('csrftoken');
$.ajaxSetup({'headers': {'X-CSRFToken': token}});
// $.ajax...
或者,您可以尝试从以下位置替换您的数据:
data: {
csrfmiddlewaretoken:"{%csrf_token%}",
},
到
data: {
csrfmiddlewaretoken:$("input[name=csrfmiddlewaretoken]").val()
},
关于javascript - {{csrf_token}} 给我 403 Forbidden 和 {%csrf_token%} 给我 500 服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642076/
我读到这两个基本上是同一回事,但每个都给我不同的错误,我不确定该去哪一个。我什至不知道如何解决这个问题。有人可以看看我的代码吗,我已经为此苦苦挣扎了两天。 我的html $(docume
在搜索结果网址中包含csrf。不知道为什么在那里,以及如何删除它。搜索效果很好。这是网址 /search/?csrfmiddlewaretoken=675d1340034e094866d15a9214
我在 django 教程中做 wiki 并且在教程中使用 django 的早期版本,其中 csrf token 不是强制性的。我已将 {% csrf_token %} 添加到表单中,但是我不确定在 V
Django 1.9.5CSRF token 未添加隐藏表单字段。尝试使用 RequestContext 进行 render_to_request,只是渲染,尝试装饰器 - 没有任何效果,隐藏的输入不
我在 Jquery Ajax 中使用 CodeIgniter3 将一些数据插入数据库。 但是,当用户插入如下内容时,我使用csrf_token来制作安全表单数据。 问题我无法在 Chrome 浏览器上
当我想在我的网站上使用我的注册表时,我收到错误 403:“CSRF 验证失败。请求已中止。”在本网站的源代码中,我意识到它丢失了。这是我网站上查看源代码的一部分: Wszystkie pola
我很好奇:我知道 Django 中有两种 csrf 保护方式:模板中的 {% csrf_token %} 和 View 中的 @csrf_protect。 所以,问题是:它们可以互换吗?我的意思是我可
我正在尝试在 Django 中执行单元测试。我在 index.html 中有以下表格: {% csrf_token %} 我正在测试 View 是否正确呈现模板: View .py de
我是 Django 新手,我仍在尝试掌握它的功能。我使用 Django 1.4.2 创建了一个非常简单的项目,它具有简单形式的索引页面,您可以在其中输入内容,还可以在结果页面中在提交后显示您的输入(代
我有一个在 1.2.1 上运行的 django 站点,有时我的用户会失去很多工作,因为 csrf_token cookie 不存在并且页面错误并在发布时出现 403 错误。我将范围缩小到另一个站点(我
我正在一个 Django 项目中工作,部分功能是用户登录,但它不起作用。同一段代码在 10 分钟前运行得很好。 错误:模板中使用了 csrf_token,但上下文未提供该值。 仅供引用,我已经尝试使用
我正在尝试将 reactjs 与 laravel 集成。所以我所做的是,通过使用一些命令将我的 js 从 vue 更改为 react。然后我在 /resources/js/components 下添加
我有一个动态生成的表单,但我不能用它做任何事情,因为 Django 在每个 POST 表单中都需要一个 csrf_token。 我的表单是通过以下方式生成的: $("#results").append
我有一个登录表单,我希望它在我的所有 View 中都可用,因此我创建了一个上下文处理器来将此表单添加到每个加载的上下文中。 问题是 {% csrf_token %}在表单模板上不会呈现具有 CSRF
我的views.py: from django.core.context_processors import csrf from django.views.decorators.csrf import
网站可以将 csrf_token 显示为 URL 参数吗?我有一种感觉,我应该看不到它,但我不太确定。如果有人能澄清这一点,我将不胜感激! 最佳答案 不,这是 Not Acceptable 。 在 U
我需要使用 csrf_token 连接一些文件(来自 laravel),但我有未知错误,例如: 语法错误,意外的 ''css/app.css)); ?>">' (T_ENCAPSED_AND_WHI
尽管我已经添加了所有必要的中间件类,但在 Django (1.2.5) 中的表单上添加 csrf_token 时遇到了一些问题 {% csrf_token %} 给出...name 'csrf_tok
这是一个简单的问题。 我正在尝试使用 Angular 5 和 Drupal 8 作为后端进行登录。连接工作正常,我可以将 JSON 发送到 Drupal 站点,它会返回一个 CSRF token 。
在不使用表单的 Django 模板中,我想将文件上传到我的 Web 服务器。因此,我正在使用名为 dropzonejs 的 javascript 库。 我完全遵循本教程 bootstrap dropz
我是一名优秀的程序员,十分优秀!