cURL 发送 POST 请求时收到 “Forbidden 403“ 错误

如果你在使用 cURL 发送 POST 请求时收到 "Forbidden 403" 错误,这可能是由于 CSRF(Cross-Site Request Forgery)保护功能导致的。Django 默认启用了 CSRF 保护,以防止跨站请求伪造。

为了解决此问题,你可以尝试以下两种方法之一:

1. 在 cURL 命令中添加 CSRF token:

在发送 POST 请求时,需要包含一个名为 csrfmiddlewaretoken 的 CSRF token。可以通过从 Django 网页应用程序获取该 token,并将其作为请求参数添加到 cURL 命令中。

curl -X POST -d "title=Book Title&author=Author Name" -H "X-CSRFToken: " http://localhost:8000/api/add_book/


请确保用实际的 CSRF token 替换

要获取 CSRF token,你可以通过在浏览器中查看 Django 网页应用程序中的 cookie,或者在表单中查找隐藏的 CSRF input 元素。

2. 禁用 CSRF 保护:
   如果你确定没有安全问题,并且在开发环境中临时禁用 CSRF 保护是可行的,你可以在 Django 视图函数上使用 @csrf_exempt 装饰器。这将免除 CSRF token 验证。在你的 Django 视图函数上添加以下装饰器:

from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def add_book(request):


    # 视图函数的代码...
请注意,这仅适用于开发阶段。在生产环境中,强烈建议启用 CSRF 保护来确保应用程序的安全性。

无论你选择哪种方法,请确保采取适当的安全措施,并在生产环境中使用正确的 CSRF 保护配置。

你可能感兴趣的:(python,数据库,python,django)