如何在我的 Django REST api 上调试启用 CORS

Posted

技术标签:

【中文标题】如何在我的 Django REST api 上调试启用 CORS【英文标题】:How do I debug enabling CORS on my Django REST api 【发布时间】:2019-02-14 02:00:34 【问题描述】:

我正在尝试在一个简单的 django rest 服务器上启用 CORS。

我已按照How can I enable CORS on Django REST Framework 此处的建议进行操作。

特别是我有:

1) 完成

pip install django-cors-headers

2)

在我安装的应用中添加了corsheaders

3) 在我的 Django 设置文件的 MIDDLEWARE 部分的顶部添加了 corsheaders.middleware.CorsMiddleware

4) 添加

  CORS_ORIGIN_ALLOW_ALL = True
  CORS_ALLOW_CREDENTIALS = True
  CORS_ORIGIN_WHITELIST = (
   'localhost:3000/radioDestinations/',
   'localhost:8080',
   )

但它仍然无法正常工作。

当我将请求发送到服务器(使用 javascript 提取请求)时,我在浏览器中收到错误消息(...被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头... ),但我在服务控制台中没有得到任何输出。

如何找出问题所在?

【问题讨论】:

curl -sD - -o /dev/null localhost:8080/ 的输出是什么? 【参考方案1】:

django-cors-headers 相当简单,您的配置对我来说似乎是正确的。

但是,我遇到了一个问题,这也可能是您的问题: 如果您将服务器配置为在不调用 Django / Python 的情况下提供静态文件(很常见,即使在内置服务器上也是如此),django-cors-headers 无法将 CORS 标头应用于这些响应。取决于浏览器,this will cause problems with asynchronous requests, fonts and sometimes even images, video and audio.

【讨论】:

你是对的,配置结果不正确。重启后效果很好。

以上是关于如何在我的 Django REST api 上调试启用 CORS的主要内容,如果未能解决你的问题,请参考以下文章

调试 WCF Web Api REST 服务的问题

[Django Rest Framework]:如何在注册页面上添加 phone_number 字段?

如何使用 Django 通道为 Django Rest Api 打开 Websocket?

如何调试使用 REST API 的 Zapier 集成?

如何在 Django REST API 中使用 GPS 位置?

应用程序在设备上调试时 REST API 调用未获取数据