Django CORS 因来自移动应用程序的发布请求而失败

Posted

技术标签:

【中文标题】Django CORS 因来自移动应用程序的发布请求而失败【英文标题】:Django CORS fails with post request from mobile app 【发布时间】:2018-03-03 19:01:07 【问题描述】: 我将Angular 4 / Ionic 3 用于前端/移动应用程序。 我正在使用Django 1.11 for the backend

当我尝试从浏览器发送请求时:headers.append('Content-Type', 'application/json');headers.append('Access-Control-Allow-Origin', '*');this.http.post('http://0.0.0.0:8000/en/accounts/user/', , headers:headers)

在我的 Django 应用程序中,我使用了 django-cors-headers 并设置: - CORS_ORIGIN_ALLOW_ALL = True - CORS_ALLOW_CREDENTIALS = True

从浏览器我得到了预期的响应,但是从移动应用程序测试时,CORS 请求似乎没有通过(返回 Response with status: 0 for URL: null

对此有何建议?

【问题讨论】:

您在手机上使用的网址如何? 看起来您正在开发服务器上运行浏览器。我可以想象您的手机无法访问您的开发服务器。您的移动版本中使用的 URL 是否可访问?如果您的应用程序位于可访问的位置,但仍然无法通过有效的 url 访问 API,那么您可能需要检查服务器是否允许 OPTIONS 标头(预检请求)。默认情况下,某些工具可能没有 OPTIONS 标头。 link Django 服务器在 0.0.0.0:8000 启动 Ionic 在 0.0.0.0:8100 启动,如果这是你的要求? 【参考方案1】:

伙计们,我想今天我很笨,或者我不知道是星期五,但问题是可能是 Mariusz 和 Nrzonline 建议的网址。

我变了:this.http.post('http://0.0.0.0:8000/en/accounts/user/', ,this.http.post('http://192.168.178.2:8000/en/accounts/user/', ,

现在它就像魅力一样。

【讨论】:

以上是关于Django CORS 因来自移动应用程序的发布请求而失败的主要内容,如果未能解决你的问题,请参考以下文章

来自 AngularJS 的 Django CORS API

CORS 因请求而失败,带有 OPTIONS(状态为 0 的响应)

来自 Django 服务器的 reactjs 请求时出错(403 错误/CORS)

CSRF 和 CORS 与 Django(REST 框架)

浏览器向 django 发出 CORS 请求的 OPTIONS 请求,但没有 POST

我的请求是跨源请求吗?(heroku 上的 Django rest api,CORS 没有阻止我的请求)