Ошибка Angular при использовании json API с python anywhere- была заблокирована CORS

я хочу получить доступ к api с помощью angular. api размещен на pythonanywhere. При доступе к API я получаю следующую ошибку:

Доступ к выборке по адресу 'https://www.pythonanywhere.com/api/v0/user/myusername/cpu/?format=json' из источника 'http://localhost:4200' был заблокирован политикой CORS: Ответ на запрос preflight не проходит проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'. Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса на 'no-cors', чтобы получить ресурс с отключенным CORS.

.

data-analysis.component.ts:26 ERROR HttpErrorResponse {headers: HttpHeaders, status: 504, statusText: 'Gateway Timeout', url: 'https://www.pythonanywhere.com/api/v0/user/StevoEs/cpu/?format=json', ok: false, ...}

.

python-anywhere.service.ts

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';


@Injectable({
  providedIn: 'root'
})
export class PythonAnywhereService {
  private host = 'www.pythonanywhere.com';
  private username = 'myUsername';
  private token = 'myToken';

  constructor(private http: HttpClient) {}


  getCpuData(): Observable<any> {
    const headers = new HttpHeaders({
      'Authorization': `Token ${this.token}`
    });
    return this.http.get<any>(
      `https://${this.host}/api/v0/user/${this.username}/cpu/?format=json`,
      { headers }
    );
  }
}

data-analyse.component.ts

import { Component, OnInit } from '@angular/core';
import { PythonAnywhereService } from '../../services/python-anywhere.service';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Component({
  selector: 'app-data-analyse',
  template: `
  <div class="card text-center bg-dark">
    <div class="card-header">
      Server CPU auslastung!
    </div>
    <div class="card-body">
      <div *ngIf="cpuData">
        {{ cpuData }}
      </div>
    </div>
  </div>
  `
})
export class DataAnalysisComponent  implements OnInit {
  cpuData: any;

  constructor(private pythonAnywhereService: PythonAnywhereService) {}

  ngOnInit() {
    this.pythonAnywhereService.getCpuData().subscribe(data => {
      this.cpuData = data;
    });
  }


}

Я прочитал документацию по Angular. Но я ничего не понял. Поиск на форумах мне тоже не помог.

Я установил Django на pythonanywhere. Там есть некоторые настройки, но и там я не смог решить проблему.

Я зацензурил здесь имя пользователя и токен.

Кто-нибудь знает, что я могу сделать?

Это не проблема front-end (Angular). Вы были заблокированы по CORS. Более подробная информация доступна здесь: CORS MOZILLA, а решение вашего вопроса, вероятно, представлено здесь: SOLUTION. Я знаю, что это не слишком большой ответ, но в данный момент я бы просто скопировал кого-то другого. Нет смысла, если я могу просто дать ссылку.

Вернуться на верх