403 Forbidden while making ajax request to endpoint in Django
Posted
技术标签:
【中文标题】403 Forbidden while making ajax request to endpoint in Django【英文标题】: 【发布时间】:2021-02-11 02:05:17 【问题描述】:我有这个端点,我正在使用 AJAX 从控制台发出发布请求,它不是我发出此请求的网页。
$.ajax(
type: 'POST',
url: "http://127.0.0.1:8000/browse/",
data: csrfmiddlewaretoken: window.CSRF_TOKEN,
success: function()
console.log("Success!");
)
但它给了我
VM29 jquery.min.js:2 POST http://127.0.0.1:8000/browse/ 403 (Forbidden)
Django 视图代码除了返回虚拟数据什么都不做
def Browse(request):
data = ['name': 'Peter', 'email': 'peter@example.org',
'name': 'Julia', 'email': 'julia@example.org']
return JsonResponse(data, safe=False)
urls.py
urlpatterns = [
path('browse/', views.Browse, name = 'browse'),
【问题讨论】:
【参考方案1】:由于您目前没有使用表单,您可以免除 csrf
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def Browse(request):
data = ['name': 'Peter', 'email': 'peter@example.org',
'name': 'Julia', 'email': 'julia@example.org']
return JsonResponse(data, safe=False)
【讨论】:
【参考方案2】:试试这个
data: "csrfmiddlewaretoken" : "csrf_token"
而不是
data: csrfmiddlewaretoken: window.CSRF_TOKEN,
希望这对您有用,否则请点击此链接: https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
【讨论】:
没有在控制台上得到同样的东西,但是在终端上我得到了Forbidden (CSRF cookie not set.): /browse/ [28/Oct/2020 22:16:01] "POST /browse/ HTTP/1.1" 403 2864
没有获取 csrf 令牌使用链接中提到的 getcokkie 方法获取 csrf 令牌docs.djangoproject.com/en/dev/ref/csrf/#ajax以上是关于403 Forbidden while making ajax request to endpoint in Django的主要内容,如果未能解决你的问题,请参考以下文章
git推送到github报错:error: The requested URL returned error: 403 Forbidden while accessing https://github