使用 django 作为离子应用程序的后端时出现 CORS 错误

Posted

技术标签:

【中文标题】使用 django 作为离子应用程序的后端时出现 CORS 错误【英文标题】:CORS-Error when using django as backend for ionic app 【发布时间】:2020-10-09 17:46:20 【问题描述】:

我使用 Django Rest Framework 作为 Ionic 应用程序的后端。 我使用 JWT 和邮递员设置了 API,一切正常。 一旦我尝试从我的 Ionic 应用程序进行 API 调用,我就会收到以下错误消息:

错误 1 跨域请求被阻止:同源策略不允许读取位于https://www.mywebsite.com/api/movies 的远程资源。 (原因:根据 CORS 预检响应的标头“Access-Control-Allow-Headers”,标头“密码”是不允许的)。

错误 2 跨域请求被阻止:同源策略不允许读取位于https://www.mywebsite.com/api/movies 的远程资源。 (原因:CORS 请求未成功)。

我在 apache2 网络服务器上运行我的 django 应用程序。

django-cors-headers 已安装, 添加到installed_apps, 添加到中间件和CORS_ORIGIN_ALLOW_ALL = Ture

在我的 Ionic 应用程序中,请求如下所示:

服务

fetchMovies() 

  const httpOptions = 
    headers: new HttpHeaders(
      'Content-Type':  'application/json',
      'Authorization': `Bearer $this.authService.getToken()`,
      'username': 'USERNAME',
      'password': 'PASSWORD'

    )
  

    return this.http.get(this.url, httpOptions).pipe(tap(resData => 
      console.log(resData);
    ));
  

我得到这样的令牌:

 getToken() 
    return this.http.post('https://www.mywebsite.com/api-token', this.params);
  

我使用的服务如下:


ionViewWillEnter() 
    this.moviesServcie.fetchMovies().subscribe();
  

有人知道我做错了什么吗? 如果您需要更多信息,请随时发表评论! 在此先感谢您的帮助

【问题讨论】:

为什么 cors 是假的?? 哦对不起我的错它实际上是真的 【参考方案1】:

你需要使用离子原生插件这里是下面的链接

https://ionicframework.com/docs/native/http

【讨论】:

感谢您的帮助。到目前为止工作正常,但现在我收到以下错误:R3InjectorError(DashboardPageModule)[MoviesService -> MoviesService -> MoviesService -> HTTP -> HTTP -> HTTP]: NullInjectorError: No provider for HTTP!

以上是关于使用 django 作为离子应用程序的后端时出现 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

React.js 应用程序向 Django 后端发送请求时出现 CORS 问题

将 https 侦听器添加到 AWS Application Load Balancer 时出现问题

使用 Vue.js 和 Auth0 进行前端认证时如何在 Django 的后端数据库中创建用户

尝试离子构建时出现角度firebase构建错误

在离子框架中需要模块时出现问题[重复]

使用 ion-label 时出现离子错误 - TypeError: Cannot read property 'children' of null