angular - HttpClient ne može ignorirati niti zaobići grešku samopotpisanog certifikata


Pokušao sam poslati POST podatke na poslužitelj, ali sam dobio pogrešku „net::ERR_CERT_INVALID“. Kod prikazan u nastavku je ono što sam pokušao kako bih zaobišao pogrešku, ali i dalje ne uspijeva. Molim vas za savjet. Hvala.

import { HttpClient, HttpParams } from '@angular/common/http';

createData(data): Promise<any> {
    let post_message = data;
    let header_node = {
      Accept: 'application/json',
      rejectUnauthorized: 'false',
    }
    // this.oauth_header.Authorization = 'Bearer ' + access_token;
    const url_params = new HttpParams()
      .set('rejectUnauthorized', 'false')
      .set('requestCert', 'false')
      .set('insecure', 'true')

    return this.http.post('https://ip/createdata', post_message, {
      headers: header_node,

    }).toPromise();

Odgovor #1

Pokušajte proslijediti zaglavlja kao HttpHeaders metodi POST.

import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';

createData(data): Promise<any> {

    let post_message = data;
    let header_node = {
        headers: new HttpHeaders(
            { 'Accept': 'application/json' },
            { 'rejectUnauthorized': 'false' })
        };

    return this.http.post('https://ip/createdata', post_message, header_node).toPromise();
}

Odgovor #2

Prošlo je neko vrijeme otkako je ovaj post objavljen, no ipak, naišao sam na sličan problem s Keycloak razvojnim serverom (samo-potpisani certifikat=nevažeći), izgrađivao sam Angular 13+ aplikaciju kako bih komunicirao s njim. Pretpostavljam da ste ovu grešku dobivali iz preglednika, dopustite mi da kažem da to nije problem HttpClienta ili Angulara, nego da preglednik blokira proces, stoga za buduće slučajeve, ovdje je "rješenje/zaobilaženje":

Idite u preglednik, upišite URL/IP vašeg servera (onaj s nevažećim certifikatom), a zatim, kada se pojavi upozorenje o nevažećem certifikatu, dopustite pregledniku pristup toj stranici. Pristup sam omogućio kao što je prikazano na slici ispod, ali i u postavkama privatnosti i sigurnosti (testirano na Chromeu). Primjer snimke zaslona preglednika

Meni je to uspjelo, nadam se da će pomoći ljudima poput mene nekoliko godina kasnije koji pokušavaju riješiti isti problem!

Povezani članci