我尝试发布参数
jQuery.ajax(
{
'type': 'POST',
'url': url,
'contentType': 'application/json',
'data': "{content:'xxx'}",
'dataType': 'json',
'success': rateReviewResult
}
);
Run Code Online (Sandbox Code Playgroud)
但是,Django返回Forbidden 403. CSRF verification failed. Request aborted.
我正在使用,'django.middleware.csrf.CsrfViewMiddleware'并且无法在不影响安全性的情况下找到如何防止此问题.
我正在尝试将jquery集成到我正在使用Django框架创建的Web应用程序中.然而,我正在努力打个简单的ajax工作电话.我的模板文件包含用于处理ajax调用的表单html和javascript,如下所示:
<script type="text/javascript">
$(document).ready(function() {
$( "#target" ).submit(function() {
console.log('Form was submitted');
$.ajax({
type: "POST",
url: "/hello/", // or just url: "/my-url/path/"
data: {
query: $( "#query" ).val()
},
success: function(data) {
console.log(data);
}
});
return false;
});
})
</script>
<form id="target" action="." method="post">{% csrf_token %}
<input id= "query" type="text" value="Hello there">
<input type="submit" value="Search Recent Tweets">
</form>
Run Code Online (Sandbox Code Playgroud)
我views.py应该处理ajax调用看起来像:
from django.core.context_processors import csrf
from django.shortcuts import render_to_response
from django.template.loader import get_template
from django.template import Context,RequestContext
from …Run Code Online (Sandbox Code Playgroud) 听起来很奇怪但是使用Javascript(例如AJAX)发布内容而不使用表单的情况如何(可以从表面读取多个内容).
我应该在哪里放置csrf_token模板标签?我已经添加了AJAX修复程序:https: //docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax
...但我得到"CSRF验证失败.请求中止." 404错误.
我正在使用ajax请求发送POST但由于csrf_token它得到了响应403.我只是使用Vuejs和后端使用Django来分割前端只是为了响应API所以我不能使用Django模板来渲染{%csrf_token%}或者在会话中使用csrftoken来使用getcookie('csrftoken'),就像在Django的doc推荐中一样.有没有人像我一样面对这个问题并得到一些解决方案?谢谢你,如果你可以帮助我.
在django 1.3中,你现在必须使用csrf甚至是ajax.我使用jquery,现在我想将csrf标记添加到$ .post.我怎样才能做到这一点?我对jquery不是很熟练,所以对于一个很好的描述会很好.
这是一个评级应用程序,点击星标时发送帖子.我见过django文档,但不明白在我的情况下该怎么做.我的代码如下:
$(function() {
$("#avg").children().not(":input").hide();
$("#rating-widget").children().not("select").hide();
$caption = $("<span/>");
$("#avg").stars({captionEl: $caption});
$("#rating-widget").stars({
inputType: "select",
cancelShow: false,
captionEl: $caption,
callback: function(ui, type, value){
--------------> $.post($("#rating-widget").attr("action"), {score: value}, function(data){
});
}
});
$caption.appendTo("#rating-widget");
});
Run Code Online (Sandbox Code Playgroud)
应该说javascript不在模板中,而是在静态文件中.最好将它放在模板中,以便我可以使用{{ csrf_token }}
提前致谢!
在模板中:
<script type="text/javascript">
$.ajax({
type:"POST",
url:"{% url DrHub.views.ajxTest %}",
data: {
'start': $('#id_startTime').val(),
'end': $('#id_endTime').val(),
'csrfmiddlewaretoken': '{{ csrf_token }}'
},
success: function(data){
alert(data);
}
});
</script>
.
.
.
<form method='POST' action=".">
{% csrf_token %}
<input type="text id="id_startTime" />
<input type="text id="id_endTime" />
<input type="submit" value="send" />
</form>
Run Code Online (Sandbox Code Playgroud)
在观点中:
def ajxTest(request):
if request.is_ajax():
if request.method == 'POST':
return HttpResponse(json.dumps({'message' : 'awesome'},ensure_ascii=False), mimetype='application/javascript')
Run Code Online (Sandbox Code Playgroud)
在settings.py中:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
)
Run Code Online (Sandbox Code Playgroud)
提交表单时我有这个错误:CSRF verification failed. Request aborted. …
我必须在url中传递一个参数.我不能像往常一样发送GET请求,变量和值会在请求的地址栏中显示.因此,最终用户可以更改此变量值的值并发送将要处理的请求.
href="url=/admin/usermanagement/?flag=2
Run Code Online (Sandbox Code Playgroud)
我想把这个藏起来 flag=2
现在这是一个GET请求,它可以在地址栏中看到.如果您有任何想法将此更改为POST以隐藏和发送值,请提供您的建议.
我从iPhone发送POST请求到Django并获得"CSRF验证失败",我无法完全理解.我试图通过互联网找到一个很好的解决方案,但我不能.是否有任何简单的方法来发送到Django?
这是我的代码:
NSString *post =[NSString stringWithFormat:@"s=aaa&r=k&c=gg"];
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:(@"http://localhost:8000/messages/views/")]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
NSError *error;
NSURLResponse *response;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(data);
Run Code Online (Sandbox Code Playgroud) 我的jQuery功能看起来像
$(function() {
// activate "New" buttons if input is not empty
$('form input[type="text"]').live('keyup', function() {
var val = $.trim(this.value);
$(this).next("button").prop('disabled', val.length === 0);
});
$("body").on("submit","form",function(e){
// do not submit the form
e.preventDefault();
// handle everything yourself
var $form = $(this);
var title = $form.closest('.video-detail').find('.title').text();
var entryTitle = $form.find('.input-small').val();
console.debug(title);
console.debug(entryTitle);
$.ajaxSetup({
beforeSend: function(xhr, settings) {
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = …Run Code Online (Sandbox Code Playgroud) 我在 Linux 上开发了我的应用程序并且 AJAX 请求工作正常。我已将应用程序拉到 Windows 机器上,但 AJAX 请求失败,我只是收到 403 Forbidden 错误。从网上看,我认为是csrf令牌的问题。在 Linux 中,我可以csrftoken:"AjQzJy3tRZ2awslgdibkDTvQgANFQKmP"在 AJAX 请求的 Cookies 下看到。我在 Windows 中没有看到任何 cookie 设置。
这是我用来获取 csrf cookie 的 Javascript 代码。它来自https://docs.djangoproject.com/en/1.8/ref/csrf/
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) == …Run Code Online (Sandbox Code Playgroud)