令牌未在飞行前请求Ionic2中发送

问题描述 投票:0回答:3

我正在使用DRF作为API服务在Ionic 2中开发应用程序。出于身份验证的目的,我正在使用JWT。我正在发送带有Authorization: jwt [token]的每个请求的身份验证令牌。在Postman中,API工作正常。

现在,当我在浏览器中测试它时,它无法正常工作,我发现它可能无法正常工作,因为JWT身份验证令牌没有作为飞行前的OPTIONS请求发送。那么我该如何解决这个问题呢。

django angular ionic2 django-rest-framework cors
3个回答
0
投票

在CORS预检OPTIONS响应中,Cross-Origin-Allow-Headers应该与请求的匹配。

Cross-Origin-Allow-Headers: Authorization

0
投票

在Ionic最新版本中,如果您使用的是ionic serve命令,则必须使用Proxies来防止预检和CORS问题,

首先在ionic.config.json文件中添加API路径和URL

{
  "name": "APP-NAME",
  "app_id": "",
  "proxies": [
    {
      "path": "/api",
      "proxyUrl": "http://example.com/api"
    }
  ]
}

现在,在从http调用您的API时,使用/api URL而不是http://example.com/api

....
    this.http.post('/api', data, {headers:headers}).map(res=>res.json()).subscribe(data=>{
      console.log(data)
    }, err=>{
      console.log("Error!:", err.json());
    });
....

完成上述更改后,您必须重新运行命令ionic serve

不过,如果你遇到问题,请参考Handling CORS Issues In Ionichttps://ionicframework.com/docs/cli/configuring.html


0
投票

实际上问题是如果没有授权令牌,OPTIONS api是不可读的,所以我们为readonly和GET api添加了OPTIONS Auth级别。

© www.soinside.com 2019 - 2024. All rights reserved.