我正在尝试通过post将来自React应用程序的表单提交到其他来源的django服务器。
浏览器发送一个OPTIONS请求,服务器上的cors中间件以200响应,并显示以下信息:
HTTP/1.1 200 OK
Date: Mon, 08 Apr 2019 16:34:38 GMT
Server: WSGIServer/0.2 CPython/3.7.2
Content-Type: text/html; charset=utf-8
Content-Length: 0
Vary: Origin
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: accept, accept-encoding, authorization, content-type, dnt, origin, user-agent, x-csrftoken, x-requested-with
Access-Control-Allow-Methods: DELETE, GET, OPTIONS, PATCH, POST, PUT
Access-Control-Max-Age: 86400
Connection: keep-alive
但是浏览器随后从未发出过POST请求。它在控制台中没有显示错误...
答案 0 :(得分:0)
尝试安装django-cors-headers
(https://pypi.org/project/django-cors-headers/)应用,然后将CORS_ORIGIN_ALLOW_ALL = True
添加到您的Django设置文件中。这是解决问题的最简单方法,此应用程序为您提供了许多CORS定制选项。
或者您可以编写自定义中间件并为每个响应添加CORS标头。
否则,您可以将CORS标头配置添加到Web服务器(nginx,apache等)。
答案 1 :(得分:0)
去检查请求响应的元素,并检查那里是否有“不允许头”消息。
如果是这样,请在Django设置中将该标头添加到CORS_ALLOW_HEADER = ['that-header']。
在我的情况下,不允许使用缓存控制标头。所以我添加了它,它起作用了。