我正在尝试使用 djangorestframework(DRF:http ://django-rest-framework.org/ )视图向 RESTful API Django Web 服务发送 HTTPS PUT 请求。由于 Django 的跨站点请求伪造 (CSRF) 保护,我无法让它工作。
PUT 请求旨在允许未经身份验证的用户添加资源。
我考虑过/尝试过的:
- 禁用 CSRF——不可接受。API 与非 API 服务在同一个 Django 实例上运行。禁用 CSRF 保护风险太大。
- 使用
X-Requested-With: XMLHttpRequest
PUT 请求的标头(我控制客户端)。不起作用 - 我仍然收到 CSRF 错误。 - 在 PUT 视图上使用
@crsf_exempt
装饰器。如果可以的话,我会的——框架定义了一个类,而不是一个视图。
我目前最好的选择是自己编写 PUT 视图,而不使用 DRF 的 View 类。然后我可以@crsf_exempt
成功使用装饰器。
我想使用 DRF 的 View 类——但看不到如何使用。你可以吗?