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)