Мой код ionic3 запрашивает эти ошибки при выполнении http-запроса - PullRequest
0 голосов
/ 13 сентября 2018

Если в моем запросе http post не добавлен параметр body, запрос будет полностью нормальным;но когда добавляется параметр body;будет выведено следующее сообщение об ошибке:

Не удалось загрузить https://clk528.com/api/article: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: заголовок «Access-Control-Allow-Origin» содержит несколькозначения '*, http://127.0.0.1:8100',, но допускается только одно.Источник 'http://127.0.0.1:8100', следовательно, не имеет доступа.

enter image description here

Мой http-сервисный код:

import {Injectable} from "@angular/core";
import {HttpClient, HttpHeaders} from "@angular/common/http";
import {Observable} from "rxjs";
import {tap, catchError} from "rxjs/operators";
import {of} from "rxjs/observable/of";
import {Events} from "ionic-angular";

@Injectable()

export class HttpService {
    constructor(public http: HttpClient, private event: Events) {
    }

    public get<T>(url: string): Observable<T> {
        let headers = new HttpHeaders();
        return this.http.get<T>(url, {headers: headers}).pipe(
            tap(model => console.log(model)),
            catchError(this.handleError<T>(url))
        );
    }

    public post<T>(url: string, body: any = null): Observable<T> {
        let headers = new HttpHeaders();
        return this.http.post<T>(url, body, {
            headers: headers
        }).pipe(
            tap(model => console.log(model)),
            catchError(this.handleError<T>(url))
        );
    }

    private handleError<T>(operation = "operation", result?: T) {
        return (error: any): Observable<T> => {
            if (error.status) {
                switch (error.status) {
                    case 401:
                        this.event.publish("user::unautherized");
                        break;
                    default:
                        break;
                }
            }
            // TODO: send the error to remote logging infrastructure
            console.error(error, operation, result); // log to console instead
            // Let the app keep running by returning an empty result.
            return of(result as T);
        };
    }
}

Если я использую следующий код для запроса, ошибки нет;и это можно сделать;мой сервер также вернет данные.

this.http.post('https://clk528.com/api/article')

Но когда я добавлю параметры, он опишет сгенерированную выше ошибку.

this.http.post('https://clk528.com/api/article', {
    page: 1
});

1 Ответ

0 голосов
/ 13 сентября 2018

Это ошибка CORS .Я не уверен, почему передача тела в почтовом запросе вызывает эту ошибку.Ваша ошибка говорит о том, что нескольким источникам разрешен доступ к серверу, но сервер разрешает доступ к нему только одному источнику, я имею в виду устройство в некотором смысле.Одно из решений, которое вы можете попробовать, - удалить 'http://127.0.0.1:8100' из списка разрешенных источников на сервере и разрешить только' * 'в качестве разрешенного источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...