django - 浏览器向 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 请求。它在控制台中显示没有错误...
解决方案
尝试安装django-cors-headers
(https://pypi.org/project/django-cors-headers/)应用程序并添加CORS_ORIGIN_ALLOW_ALL = True
到您的 django 设置文件中。这是解决问题的最简单方法,此应用程序为您提供了许多 CORS 自定义选项。
或者您可以编写自定义中间件并为每个响应添加 CORS 标头。
否则,您可以将 CORS 标头配置添加到您的网络服务器(nginx、apache 等)。
推荐阅读
- r - 在 iris 数据集中发现额外的列
- python - Pandas 数据框中带有 group_by 的 if-else 语句
- reactjs - 应用程序中对 antd 组件的多次覆盖
- node.js - Node JS Express 应用程序中的 MaxListenersExceededWarning
- python - 使用 Jupyter 运行 python 包
- java - redisTemplate.executePipelined 可能导致 SocketTimeOut
- wolfram-mathematica - 如何使 PopupMenu[x, {1, 2, 3, 4, 5, 6}] 列出其项目不只是一列?
- javascript - 如何从javascript中的回调将元素添加到全局数组
- azure - Azure 函数的 Web UI 用于监视和重播排队的项目
- rust - to_owned() 什么时候不克隆?