Chrome 'Cross-Origin Read Blocking (CORB) заблокировал перекрестный ответ' ionic - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь аутентифицировать пользователя, но не могу вызвать API из-за заблокированной Блокировки чтения из-за кросс-источника (CORB) из-за моей учетной записи login.ts. Код

if (this.plugins.isOnline()) {
            if (this.wait == true) {
                return;
            } else if (this.userLogin.email == '' || this.userLogin.password == '') {
                this.utility.doToast("Please don't leave any field blank.");
                return;
            } else {
                this.wait = true;
                this.auth.login(this.userLogin).subscribe((success) => {
                    this.wait = false;
                    console.log(success.successData);
                    this.credential.setUser(success.successData);
                    this.plugins.sendTags(success.successData.id)
                    this.rememberUsertype(success.successData.is_celebrity);
                    if(success.successData.is_celebrity == '0'){
                    this.app.getRootNav().setRoot("HomePage");
                    }
                    else if(success.successData.is_celebrity == '1'){
                    this.app.getRootNav().setRoot("DashboardPage");
                     }

                    }, (error) => {
                        console.log(error);
                    this.wait = false;
                    if (this.utility.timeOutResponse(error))
                        this.utility.doToast("The email or password you entered is incorrect.")
                })
            }
        } else {
            this.utility.doToast(this.utility.internetConnectionMessage());
        }

this.auth.login function

login(params) {
        console.log(params);
        var url = this.constants.API_ENDPOINT + 'login';
        var response = this.http.post(url, params, {}).map(res => res.json());
        return response;
    }

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Вы можете сделать пару вещей.Один из них - добавить политику CORS в бэкэнд вашего логинаЕсли вы используете Node для бэкэнда, то есть пакет npm с именем cors , который сделает свое дело.Если нет, то должен быть простой способ добавить политику в используемый вами язык / структуру.Если вы проходите аутентификацию через поставщика услуг, такого как Firebase или Auth0 , вы можете добавить свой URL (localhost или что-то еще) к их настройкам, и это решит проблему.

Другая вещь, которую вы можете сделатьсделать, это добавить расширение в ваш браузер, чтобы он отправил запрос предварительной проверки cors для вас.У меня есть один, который я использую с Chrome, и он просто называется CORS .Это прекрасно работает, но будьте осторожны с этим.Я использую его только при разработке на локальном хосте, поэтому настроил его так, чтобы он добавлял запрос предварительной проверки только тогда, когда URL является локальным, просто для безопасности.

В конечном счете, возможно, вам потребуется сочетание обоих этих подходов.

0 голосов
/ 21 февраля 2019

Вам необходимо добавить несколько CORS-заголовков в ответ API.

Мой бэкэнд в PHP, поэтому я просто добавил следующие строки:

    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
    header('Access-Control-Allow-Headers: Content-Type');
0 голосов
/ 19 февраля 2019

Allow-Control-Allow-Origin: позволяет запрашивать любой сайт с ajax из любого источника.Добавляет в ответ заголовок «Allow-Control-Allow-Origin: *»

Добавьте это расширение в ваш браузер: Allow-Control-Allow-Origin

...