angular - HttpClient kan inte ignorera eller kringgå fel på självsignerat certifikat


Jag har försökt skicka POST-data till en server men jag fick ett fel, “net::ERR_CERT_INVALID”. Koden som visas nedan är vad jag försökte för att kringgå felet men det misslyckades fortfarande. Vänligen ge råd. Tack.

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();

Svar #1

Försök skicka headers som HttpHeaders till POST-metoden.

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();
}

Svar #2

det har gått ett tag sedan detta inlägg publicerades, ändå stötte jag på ett liknande problem med en Keycloak-utvecklingsserver (självsignerat certifikat=ogiltigt), jag byggde en Angular 13+-app för att interagera med den. Eftersom jag antar att du fick detta fel från webbläsaren, låt mig säga att det inte är ett HttpClient- eller Angular-problem, utan webbläsaren som blockerar processen, så för framtida fall, här är "lösningen/omgåendet":

Gå till webbläsaren, skriv din server-URL/IP (den med ogiltigt certifikat), och sedan, när varningen för ogiltigt certifikat visas i webbläsaren, tillåt åtkomst så att webbläsaren kan navigera dit. Jag har beviljat åtkomst enligt bilden nedan men också i sekretess- och säkerhetsinställningarna (testat i Chrome) Exempel på webbläsarskärmdump

För mig fungerade det, hoppas det hjälper människor som jag några år senare som försöker lösa samma problem!

Relaterade artiklar