angular - HttpClient ไม่สามารถเพิกเฉยหรือข้ามข้อผิดพลาดใบรับรองที่เซ็นด้วยตัวเองได้
ฉันได้พยายามส่งข้อมูล POST ไปยังเซิร์ฟเวอร์ แต่ได้รับข้อผิดพลาด "net::ERR_CERT_INVALID" โค้ดดังที่แสดงด้านล่างคือสิ่งที่ฉันพยายามใช้เพื่อหลีกเลี่ยงข้อผิดพลาด แต่ก็ยังล้มเหลว กรุณาช่วยแนะนำด้วย ขอบคุณค่ะ
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();
คำตอบ #1
ลองส่ง headers เป็น HttpHeaders ไปยังเมธอด 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();
}
คำตอบ #2
ก็ผ่านมาแล้วสักระยะนับตั้งแต่โพสต์นี้ถูกโพสต์ อย่างไรก็ตาม ฉันเจอปัญหาแบบเดียวกันกับเซิร์ฟเวอร์ Keycloak สำหรับนักพัฒนา (ใบรับรองเซ็นเอง=ไม่ถูกต้อง) ฉันกำลังสร้างแอป Angular 13+ เพื่อโต้ตอบกับมัน เนื่องจากฉันถือว่าคุณได้รับข้อผิดพลาดนี้จากเบราว์เซอร์ ให้ฉันบอกว่า นี่ไม่ใช่ปัญหาของ HttpClient หรือ Angular แต่เป็นเบราว์เซอร์ที่บล็อกกระบวนการ ดังนั้นสำหรับกรณีในอนาคต นี่คือ "วิธีแก้ปัญหา/การข้าม":
ไปที่เบราว์เซอร์ พิมพ์ URL/IP ของเซิร์ฟเวอร์ของคุณ (ซึ่งมีใบรับรองไม่ถูกต้อง) แล้วเมื่อมีการแจ้งเตือนใบรับรองไม่ถูกต้องปรากฏขึ้น ให้อนุญาตการเข้าถึงเพื่อให้เบราว์เซอร์ไปยังที่นั่น ฉันได้อนุญาตการเข้าถึงตามภาพด้านล่าง แต่ก็ได้ทำในการตั้งค่าความเป็นส่วนตัวและความปลอดภัยด้วย (ทดสอบใน Chrome) ตัวอย่างสกรีนช็อตของเบราว์เซอร์
สำหรับฉันมันใช้ได้ หวังว่าจะช่วยคนที่เหมือนฉันในอีกไม่กี่ปีต่อจากนี้ที่พยายามแก้ปัญหาเดียวกัน!
