我在django上设置了一个REST API,并通过启用了CORS的JavaScript AJAX请求。
它工作正常,直到我尝试使用PUT请求。
因为django无法处理PUT,我使用的是django-piston的coerce_put_post方法。
问题是,PUT请求被成功处理,但OPTIONS请求失败了405 METHOD NOT ALLOWED
。
这是失败请求的网络日志。
- 请求网址:
http://localhost
- 请求方法:选项
- 状态代码:405方法不允许
请求标题
- 接受: /
- 接受编码:gzip,deflate,sdch
- 接受语言:de,en-US; q = 0.8,en; q = 0.6
- 访问控制请求标头:接受,来源,内容类型
- 访问控制请求方法:PUT
- 缓存控制:无缓存
- 连接:keep-alive
- 主持人:foo
- 来源:
http://localhost
- Pragma :no-cache
- Referer :
http://localhost/bar
- User-Agent :Mozilla / 5.0(Windows NT 6.2; WOW64)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 28.0.1500.95 Safari / 537.36
响应标题
- Access-Control-Allow-Credentials :true
- Access-Control-Allow-Headers :Content-Type,Pragma,Cache-Control
- 访问控制 - 允许 - 方法:POST,GET,OPTIONS,PUT,DELETE
- 访问控制 - 允许 - 来源:
http://localhost
- 允许:发布,获取,选项,放置,删除
- 内容类型:text / html;字符集= UTF-8
- 日期:星期五,2013年8月9日09:39:41 GMT
- 服务器:WSGIServer / 0.1 Python / 2.7.4
如您所见,实际上允许在CORS标题中使用OPTIONS。
那为什么它仍然失败?