Почему «первый GET» завершился ошибкой «Нет Access-Control-Allow-Origin» », но следующий GET завершился успешно? - PullRequest
0 голосов
/ 12 апреля 2020

Я обнаружил странную проблему: когда я получаю данные в Angular из бэкэнда через API данных (oatpp 1.0), он сообщает об ошибке «Нет Access-Control-Allow-Origin» », но следующий GET может работать, поэтому я сделал обходной путь, поставив бесполезный фиктивный GET, а затем следуя своему полезному GET, чтобы я мог получить данные. но я все еще задаюсь вопросом, почему 1-й GET провалился, я не думаю, что это проблема сервера данных API, потому что я тестировал с другими инструментами, такими как почтальон и http ie и 'JSON Viewer Awesome chrome extension' et c это всегда работает.

Кто-нибудь может мне помочь, спасибо!

Спасибо и С уважением, Мартин.

//in service 
getDummy(): Observable<any>{
const url = `${this.BaseUrl}/repo/dummy`;
return this.http.get<any>(url);
}

getCatalog(): Observable<any> {
const url = `${this.BaseUrl}/repo/catalog`;
return this.http.get<any>(url);;
}

//in component
ngOnInit(): void {
this.subCatalog = this.data.getCatalog().subscribe(
    catalog => {
    this.dataSource.data = catalog;

    // register click group node and accumulate nodes on the path
    this.comm.pathClickSubject.pipe(
        debounceTime(10)
    ).subscribe(
        ps => {
        console.log(ps); //use paths
        this.pathNodes = [];
        }
    );
    }, error => {
    console.error(`getCatalog(): ${error.message}`);
    }
);

this.subDmlOps = this.comm.dmlSubject.subscribe(
    _ => {
    this.subDummy = this.data.getDummy().subscribe(
        catalog => {
        console.log(`Detected db deletion, Dummy need refresh...`);
        this.dataSource.data = catalog;
        }, error => {
        console.error(`getDummy(): ${error.message}`);  //-->  blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource
        }
    );

    //this is the USEFUL GET with above dummy get ahead, it works
    //if i remove the before dummy get, this GET will have the CORS error instead.
    this.subCatalog = this.data.getCatalog().subscribe(
        catalog => {
        console.log(`Detected db deletion, Catalog need refresh...`);
        this.dataSource.data = catalog;
        }, error => {
        console.error(`getCatalog(): ${error.message}`);
        }
    );
    }
);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...