我想使用 Javascript、jQuery、AJAX 在前端调用 Django Rest API。请求方法是 POST 但当我看到 API 调用它的调用 OPTIONS 方法时。所以,我开始了解access-control-allow-origin
我猜这需要在 API 中被允许。为此我用了django-CORS-headers
包但仍然调用OPTIONS
method.
code是这样的:
jQuery.ajax({
url: API_url,
headers:headers,
dataType: "JSON",
type: "POST",
crossDomain: true,
xhrFields: {
withCredentials: true
},
success: function( response, jqXHR ) {
do something here
}
});
好吧,我很久以前就知道了这个答案,但忘记了我当时发布了这个问题!
因此,每当两个应用程序之间发出 http 请求时,浏览器都会执行OPTION
request 首先检查应用程序是否经过身份验证,以便向其他应用程序发出请求。如果身份验证失败,则不会发送其他请求。这就是为什么如果您向 api 发出 postman 请求,它无需启用 cors 即可工作。因此,要使跨源请求起作用,请设置密钥CORS_ORIGIN_ALLOW_ALL = True
在 Django 中settings.py
用于为所有域启用 CORS。将指定域设置为白名单
CORS_ORIGIN_ALLOW_ALL = False
,
CORS_ORIGIN_WHITELIST = ('http//:localhost:8000')
PS:你必须使用django-CORS-header
包裹。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)