如果你在使用 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: <csrf_token>" http://localhost:8000/api/add_book/
请确保用实际的 CSRF token 替换 <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 保护配置。