当前位置: 首页 > 知识库问答 >
问题:

错误403禁止通过ajax请求服务器

方俊
2023-03-14

我在一个网站上工作,跟踪待办事项列表,并从服务器上提取它。下面有两个示例ajax调用。任务GET调用工作正常,但添加POST不工作。出于某种原因,它给我一个403禁止的错误,结果,不执行代码。

在Django框架中发出ajax Post请求时,我看到了403禁止的错误,我阅读了@yohn发布的链接,但我不理解如何实现这个解决方案。

var tasker = (function() {
    return {
        tasks : function( ownerId, cb ) {
            $.ajax({ 
                url: "http://138.49.184.143:3000/tasker/api/"+ownerId+"?key=f725ebbc9c",
                type: 'GET',
                success: function(task) {
                    if(task){
                        var list = []
                        for(var a=0; a<task.length; a++){                   
                            var newTask = {
                                onwerId: task[a].ownderId,
                                desc: task[a].desc,
                                due: new Date(task[a].due),
                                color: task[a].color,
                                complete: task[a].complete,
                                id: task[a].id
                            };
                            list.push(newTask);
                        }
                        cb(list , null);
                    }
                    else{ cb(null, 'error retreiving your tasks');}
                },
                error: function( xhr, status, errorThrown ) {
                    alert( "Sorry, there was a problem! "  + errorThrown );
                },
            });      
        },

        add : function( ownerId, task, cb ) {
            $.ajax({ 
                url: "http://138.49.184.143:3000/tasker/api/"+ownerId+"?key=f725ebbc9c",
                type: 'POST',
                success: function(task) {
                    var d = new Date(task.due);
                    if(task){
                        var newTask = {
                            onwerId: task.ownderId,
                            desc: task.desc,
                            due: d,
                            color: task.color,
                            complete: task.complete,
                            id: task.id
                        };
                        cb(newTask , null);
                    }
                    else{cb(null, 'error adding your task');}
                },
                error: function( xhr, status, errorThrown ) {
                    alert( "Sorry, there was a problem! "  + errorThrown );
                },
            });            
        },
    }       

})();

共有1个答案

羊舌兴德
2023-03-14

Django在发出POST请求时需要csrf令牌(除非您使用基于令牌的身份验证,但我假设您不在这里)。这就像你需要在表单提交中包含{{csrf_token}一样。

有关为什么需要它以及csrf令牌的用途的更多信息:什么是csrf令牌?它的重要性是什么?它是如何工作的?

所以对于你的问题,改变你的ajax调用下的添加到这里:

$.ajax({ 
        url: "http://138.49.184.143:3000/tasker/api/"+ownerId+"?key=f725ebbc9c",
        type: 'POST',
        data: { csrfmiddlewaretoken: '{{ csrf_token }}'}, // added csrf token.
        success: function(task) {
            var d = new Date(task.due);
            if(task){
                var newTask = {
                    onwerId: task.ownderId,
                    desc: task.desc,
                    due: d,
                    color: task.color,
                    complete: task.complete,
                    id: task.id
                };
                cb(newTask , null);
            }
            else{cb(null, 'error adding your task');}
        },
        error: function( xhr, status, errorThrown ) {
            alert( "Sorry, there was a problem! "  + errorThrown );
        },
    });
 类似资料:
  • 对localhost的Ajax请求返回403错误。然而,当我更改controller requestMethod以获取并在浏览器上打开请求“url”时,它会显示从服务器返回的json数据。我希望使用这些数据填充一个下拉列表。请帮帮我。我正在使用spring security 4.0和spring MVC框架。CSRF未禁用。此外,该url在Spring得到保护。 我在这里查看了相关问题,但没有找到

  • 问题内容: 每当我尝试从数据库中获取用户信息时,都会收到-error 消息。关于下面的代码,每当我尝试通过按Ajax测试按钮尝试请求时,它都无法运行并给我发出警报,但是在控制台中也给我一个-error。我不确定是否与Spring安全性有关? 用户JSP页面: 用户控制器类: 问题答案: 它通常是由Spring默认的CSRF保护引起的。 例如,如果你使用JS代码中的DELETE HTTP请求,则还需

  • 每次尝试从数据库中获取用户信息时,我都会收到一个错误。关于我下面的代码,每次我按下Ajax测试按钮尝试请求时,它都无法运行并向我发出警报,但控制台中也会向我发出403禁止的错误。我不确定这是否与Spring security有关? 用户JSP页面: 用户控制器类:

  • 问题内容: 我试图通过从slide_images文件夹中获取所有图像名称并将其附加到来动态地动态显示滑块图像。 问题答案: 最后,我通过使用json解决了这个问题。 首先,我创建getimages.php文件并读取该文件中的目录,并获取所有图像名称并将该名称存储在数组中。 getimages.php 从要动态加载图像的页面调用getimages.php。 index.php 这对我来说是完美的。

  • 嗨,我刚开始学习Spring、AJAX和JSON。当我试图发回一条信息时,我遇到了一个错误。 信息。jsp 控制器。JAVA 我尝试了很多不同的方法来解决这个问题,但都没有效果,我无法发布消息。 有什么帮助或原因让我一直犯这个错误吗? jquery。js:4帖子http://localhost:8080/spring/sendmessage403(禁止)发送@jquery。js:4 ajax@jq

  • POST请求给出以下请求的禁止错误。 来自Google代码存档的代码https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/recaptcha/recaptcha-php-1.11.zip 函数调用如下 功能如下 请求和响应如下 HTTP\U请求=POST/recaptcha/api/sitev