CORS (Perkongsian Sumber Silang Asal) sering menjadi punca sakit kepala apabila menyambungkan apl Sudut kepada API Go. Memahami cara menambah pengepala Keizinan dalam Sudut dan mengendalikan CORS dalam Go adalah penting untuk komunikasi yang berjaya antara kedua-duanya.
Untuk menambah pengepala Kebenaran dalam Sudut, anda harus menggunakan Pemintas Http. Contoh Pemindas Auth ialah:
@Injectable() export class AuthInterceptor implements HttpInterceptor { intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { req = req.clone({ setHeaders: { 'Content-Type': 'application/json; charset=utf-8', 'Accept': 'application/json', 'Authorization': `Bearer ${AuthService.getToken()}`, }, }); return next.handle(req); } }
Daftarkan pemintas dalam modul apl anda:
providers: [ { provide : HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi : true, }, ],
Pastikan kod Go anda membenarkan pengepala permintaan yang diperlukan daripada apl Angular:
headersOk := handlers.AllowedHeaders([]string{"*"}) originsOk := handlers.AllowedOrigins([]string{"*"}) methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
Jika isu berterusan, konfigurasikan dengan teliti tetapan CORS anda agar sepadan dengan pengepala permintaan pelanggan.
Kod Sudut berikut:
this.http.get<ProjectedBalance>(requestUrl, {headers: new HttpHeaders().set('Authorization', 'my-auth-token')})
Digabungkan dengan kod Go berikut:
headersOk := handlers.AllowedHeaders([]string{"Authorization"}) originsOk := handlers.AllowedOrigins([]string{"*"}) methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
Sepatutnya berjaya mewujudkan komunikasi antara apl Angular dan Go API.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Masalah Pengepala HTTP Sudut dan Isu CORS Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!