首页 > 解决方案 > 浏览器向 django 发出 CORS 请求的 OPTIONS 请求,但没有 POST

问题描述

我正在尝试通过 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 请求。它在控制台中显示没有错误...

标签: djangocorsdjango-cors-headers

解决方案


尝试安装django-cors-headershttps://pypi.org/project/django-cors-headers/)应用程序并添加CORS_ORIGIN_ALLOW_ALL = True到您的 django 设置文件中。这是解决问题的最简单方法,此应用程序为您提供了许多 CORS 自定义选项。

或者您可以编写自定义中间件并为每个响应添加 CORS 标头。

否则,您可以将 CORS 标头配置添加到您的网络服务器(nginx、apache 等)。


推荐阅读