如何使用 javascript/jquery/AJAX 调用 Django REST API?

Posted

技术标签:

【中文标题】如何使用 javascript/jquery/AJAX 调用 Django REST API?【英文标题】:How to call Django REST APIs using javascript/jquery/AJAX? 【发布时间】:2016-10-23 06:31:02 【问题描述】:

我想使用 javascript、jQuery、AJAX 在前端调用 Django Rest API。请求方法是 POST 但是当我看到 API 调用它的调用 OPTIONS 方法时。所以,我开始了解access-control-allow-origin,我猜它需要在 API 中被允许。为此,我使用了django-CORS-headers 包,但仍然调用了OPTIONS 方法。

代码是这样的:

jQuery.ajax(
            url: API_url,
            headers:headers,
            dataType: "JSON",
            type: "POST",
            crossDomain: true,
            xhrFields: 
                withCredentials: true
            ,
            success: function( response, jqXHR ) 
                    do something here
            
);

【问题讨论】:

【参考方案1】:

好吧,我很久以前就知道了这个答案,但忘记了我当时发布了这个问题! 因此,每当两个应用程序之间发出 http 请求时,浏览器都会首先发出 OPTION 请求,以检查应用程序是否经过身份验证以向另一个应用程序发出请求。如果身份验证失败,则不会发送其他请求。这就是为什么如果你向 api 发出邮递员请求,它会在不启用 cors 的情况下工作。因此,为了使跨源请求能够正常工作,请在 django settings.py 中设置密钥 CORS_ORIGIN_ALLOW_ALL = True,以便为所有域启用 CORS。将指定域设置为白名单

CORS_ORIGIN_ALLOW_ALL = False,

CORS_ORIGIN_WHITELIST = ('http//:localhost:8000')

P.S.:你必须使用django-CORS-header 包。

【讨论】:

以上是关于如何使用 javascript/jquery/AJAX 调用 Django REST API?的主要内容,如果未能解决你的问题,请参考以下文章

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?