【问题标题】:Ionic app not issuing POST request离子应用程序未发出 POST 请求
【发布时间】:2016-03-17 13:52:19
【问题描述】:

我的 Ionic 应用程序与 Django API 服务器后端有一个有趣的问题。

在我的应用程序的以前版本 (0.0.1-.0.0.5) 中,这还没有出现,但从现在开始,我无法发出 POST 请求来获取我的身份验证令牌。

在我部署的服务器上使用本地 Ionic ionic serve,当我尝试登录时,我的服务器注册一个 OPTIONS /token-auth/,然后是 POST /token-auth/。根据服务器日志,当我在我的设备ionic run android 上运行应用程序并尝试登录时,服务器只注册了 OPTIONS 请求但不注册 POST。

我发现这是由于 CORS,它首先发出 OPTIONS 以查看允许发出的内容。由于某种原因,OPTIONS 请求完全没有返回。在我的其他 Django Rest Framework 项目中,OPTIONS 得到了正确的响应。我认为这是相关的,但奇怪的是它从本地主机到部署的服务器,OPTIONS 请求响应相同。

我的登录功能非常基本:

$http({ 
  method: 'POST',
  url: config.apiUrl + 'token-auth/',
  data: {
    "username": usernameElement[0].value,
    "password": passwordElement[0].value
  }
}).then(function(data) {
  console.log('success', data);
  ...
}, function(err) {
  console.log('error', err);
  ...
});

我发现有趣的另一件事是它运行错误函数,但我没有在err 变量中返回一个正常的错误对象,而是返回似乎是请求对象的东西。我以前从未见过。

{
  "data":null,
  "status":0,
  "config":{
    "method":"POST","transformRequest":[null],
    "transformResponse":[null],
    "url":"http://example.com/api/token-auth/",
    "data":{
      "username":"myuser",
      "password":"mypassword"
    },
    "headers":{
      "Accept":"application/json, text/plain, */*",
      "Content-Type":"application/json;charset=utf-8"}
    },
  "statusText":""
}
  • 在已部署的服务器上运行良好的本地应用程序
  • 设备应用到部署的服务器没有注册 POST 请求,只有 OPTIONS
  • AJAX 错误返回是请求对象,不是错误响应对象

我已经被困在这个问题上几天了,正在寻找任何想法。

【问题讨论】:

标签: django ionic-framework


【解决方案1】:

这实际上是一个 CORS 问题。通过django-cors-headers调试后发现没有通过CORS。后来我发现,由于某种原因,离子没有在http://192.168.1.36:8100 上提供服务,而是在http://192.168.1.10:8100

上提供服务

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多