离子应用程序不发出POST请求

时间:2016-03-17 13:52:20

标签: django ionic-framework

我的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带来了适当的响应。我认为这是相关的,但奇怪的是它从localhost到部署的服务器工作,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错误返回是请求对象,而不是错误响应对象

我已经坚持了几天,我正在寻找任何想法。

1 个答案:

答案 0 :(得分:1)

这实际上是一个CORS问题。通过django-cors-headers调试后,我发现它没有通过CORS。我后来发现,而不是在http://192.168.1上提供服务。 36 :8100由于某种原因离子切换到http://192.168.1 10 :8100 < / p>