python - Django REST:OPTIONS 请求注册为 PUT
问题描述
每当浏览器发送一个 OPTIONS 请求时,Django REST 将其注册为一个 PUT 请求。
当我注意到它时,我正在编写我的许可代码。我使用传递给def has_object_permission( self, request, view, obj ):
.
Usingrequest.method
将为除 OPTIONS 之外的每个请求返回正确的请求方法。但是,当我在项目的不同部分中使用request.method
我的函数时,会返回正确的响应。该功能get_permission( self, request, view ):
可能有问题吗?has_object_permission()
目前我只是检查请求是否是 PUT,因为我相信 Django 无论如何都不会使用 PUT 请求。但是,如果我可以改用实际名称,那就太好了。
我的 Django REST 版本是3.9.0
解决方案
OPTIONS 请求通常用于跨域资源共享 (CORS) 中所谓的“飞行前”请求。这并没有什么问题has_object_permission()
,只是这些飞行前请求可能不打算由您的视图处理。此 SO 帖子中有更详细的答案: https ://stackoverflow.com/a/29954326/784648
推荐阅读
- java - Java Restful - 获取方法返回 Null
- svg - VueJs 不显示 SVG
- python - 在 Django 中,如何创建可重用的接收器函数?
- angular - 如何在 Angular 中使用嵌套的休息资源?
- python - 如何创建新实体并使用它在我的测试数据中查找实体?如何使我的标记化工作?
- java - Java + Android Jetpack + Dagger 2 在 ViewModel 中注入
- macos - 对 macOS 系统库的符号化调用?
- javascript - 更新 mongo db 文档中另一个数组内的嵌套数组字段
- python - 通过 pod 访问 kubernetes python api
- node.js - Node.js Streams:有没有办法将 fs 写入流转换或包装成 Transform 流?