【发布时间】:2017-10-12 10:37:40
【问题描述】:
我是使用 Django 的新手,所以这对某些人来说可能是一件容易的事......我希望如此!
我按照此处的教程构建了一个 Django REST API:http://www.django-rest-framework.org/。当我运行服务器时,我可以使用 Browsable API 并通过 API 导航,例如这个链接:http://127.0.0.1:8000/snippets/。我还可以通过 Postman GET 请求访问此 URL 并检索相关的 Snippets。
现在,这是我的问题:
我创建了一个 React Native 应用程序,我从这个 URL 获取数据(我的 python 服务器正在运行)。我 console.log 对此的响应,我不断收到以下错误:
Error: Network Error
at createError (createError.js:15)
at XMLHttpRequest.handleError (xhr.js:87)
at XMLHttpRequest.dispatchEvent (event-target.js:172)
at XMLHttpRequest.setReadyState (XMLHttpRequest.js:478)
at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:324)
at XMLHttpRequest.js:418
at RCTDeviceEventEmitter.emit (EventEmitter.js:179)
at MessageQueue.__callFunction (MessageQueue.js:236)
at MessageQueue.js:108
at guard (MessageQueue.js:46)
我可以在浏览器或 Postman 中刷新链接并且没有任何问题,但在 fetch 中...我无法取得任何成功,并且只能返回上面模糊的错误消息。
我认为它可能必须与 CSRF 或 CORS 一起使用...但我在 Django 中的这两个设置都可以(并且错误消息没有说这些,所以我不认为是这样)。
有什么建议/想法吗?
谢谢!
【问题讨论】:
-
可能是 CORS 问题,你确定 JS 发送了
Access-Control-Allow-Origin: *并且 ReactApp 的 IP 地址在 django 设置中被列入白名单吗? -
我不能说 CORS 不是 100% 的问题,但我已经安装了 pip install django-cors-headers,添加了已安装的应用程序,添加了中间件并设置了 CORS_ORIGIN_ALLOW_ALL = True。我应该在其他地方尝试 Access-Control-Allow-Origin: * 吗?
-
嗯,应该就是这样。这是完整的堆栈跟踪吗?
-
是的,我上面发布的错误是整个 .catch((error) => console.log(error));还有其他想法吗?感谢您的帮助!
标签: python django rest django-rest-framework axios