相关疑难解决方法(0)

"CSRF令牌丢失或不正确",同时在Django中通过AJAX发布参数

我尝试发布参数

 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'并且无法在不影响安全性的情况下找到如何防止此问题.

django jquery django-csrf

61
推荐指数
6
解决办法
8万
查看次数

403在Django框架中发出ajax Post请求时出现Forbidden错误

我正在尝试将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)

django ajax jquery post

34
推荐指数
5
解决办法
9万
查看次数

没有表格的Django CSRF令牌

听起来很奇怪但是使用Javascript(例如AJAX)发布内容而不使用表单的情况如何(可以从表面读取多个内容).

我应该在哪里放置csrf_token模板标签?我已经添加了AJAX修复程序:https: //docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax

...但我得到"CSRF验证失败.请求中止." 404错误.

django ajax jquery csrf

10
推荐指数
1
解决办法
1万
查看次数

当他们分开时,Django的csrf_token进入Vuejs

我正在使用ajax请求发送POST但由于csrf_token它得到了响应403.我只是使用Vuejs和后端使用Django来分割前端只是为了响应API所以我不能使用Django模板来渲染{%csrf_token%}或者在会话中使用csrftoken来使用getcookie('csrftoken'),就像在Django的doc推荐中一样.有没有人像我一样面对这个问题并得到一些解决方案?谢谢你,如果你可以帮助我.

django vue.js

9
推荐指数
1
解决办法
5327
查看次数

带有jquery的CSRF和django 1.3中的$ .post

在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 }}

提前致谢!

django jquery django-csrf

6
推荐指数
1
解决办法
7364
查看次数

错误:"CSRF验证失败.请求中止." 当使用jquery ajax与Django时

在模板中:

<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. …

python django ajax jquery

4
推荐指数
1
解决办法
8544
查看次数

如何在没有表单的POST请求中发送url参数

我必须在url中传递一个参数.我不能像往常一样发送GET请求,变量和值会在请求的地址栏中显示.因此,最终用户可以更改此变量值的值并发送将要处理的请求.

href="url=/admin/usermanagement/?flag=2
Run Code Online (Sandbox Code Playgroud)

我想把这个藏起来 flag=2

现在这是一个GET请求,它可以在地址栏中看到.如果您有任何想法将此更改为POST以隐藏和发送值,请提供您的建议.

django url httpwebrequest url-parameters

4
推荐指数
1
解决办法
2万
查看次数

iPhone发布到Django并获得CSRF验证失败

我从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)

iphone django post django-csrf

3
推荐指数
1
解决办法
3395
查看次数

jQuery:为Django设置CSRF令牌无法正常工作

我的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)

django jquery csrf

2
推荐指数
1
解决办法
4536
查看次数

Django - 由于 csrf 令牌无法在 Windows 上工作,AJAX 无法工作

我在 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)

django ajax

2
推荐指数
1
解决办法
2717
查看次数

标签 统计

django ×10

jquery ×6

ajax ×4

django-csrf ×3

csrf ×2

post ×2

httpwebrequest ×1

iphone ×1

python ×1

url ×1

url-parameters ×1

vue.js ×1