【发布时间】:2014-12-29 23:24:40
【问题描述】:
我正在本地机器(node 和 django)上使用两台开发服务器。
我已将django-cors-headers 添加到项目中,以允许所有来源和方法(在开发上)具有以下设置:
CORS_ORIGIN_ALLOW_ALL = 'ALL'
CORS_ALLOW_METHODS = (
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'OPTIONS'
)
我在尝试删除时收到 405。 查看响应头
HTTP/1.0 405 METHOD NOT ALLOWED
Date: Mon, 03 Nov 2014 10:04:43 GMT
Server: WSGIServer/0.1 Python/2.7.5
Vary: Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Access-Control-Allow-Origin: *
Allow: GET, POST, HEAD, OPTIONS
请注意,DELETE & PATCH / PUT 不在允许的方法列表中。
我的配置中是否缺少某些内容?
【问题讨论】:
-
您的视图是否实现了这些方法?你在使用模型视图集吗?混合,ApiView?
-
好老
viewsets.ModelViewSet- 测试运行完美。 -
您认为允许哪些方法?由于文档
CORS_ALLOW_METHODS只定义了可以全局使用的方法,但不会自动将其添加到视图中。还有一件事CORS_ORIGIN_ALLOW_ALL必须是布尔值,而不是字符串。 -
@coldmind - 你是对的 - 这是一个布尔值 - 改变了它,同样的结果。我想我对全局和视图级别 CORS 定义之间的区别有点困惑。您介意扩展我如何使用
ModelViewset在特定视图上允许 DELETE 吗? delete 方法在测试中有效,因此视图必须允许它,但 CORS 标头未在响应中更新(我认为djagno-cors-header应该这样做......)
标签: django django-rest-framework django-cors-headers