在Angular 和Go 中處理授權標頭
要將授權標頭加入Angular HTTP 請求,請考慮使用HTTP 攔截器。它們允許您向每個請求添加標頭,而 Guards 可用於路由保護。
Angular HTTP 攔截器範例:
// auth.interceptor.ts import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import { AuthService } from './auth.service'; @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); } }
將攔截器註冊為app.module.ts 中的提供者:
// app.module.ts import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; import { AuthInterceptor } from '../auth/auth.interceptor'; ... imports: [ HttpClientModule, ... ], providers: [ { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true, }, ... ], ...
轉CORS配置:
在Go中,確保您的 CORS 配置與客戶端發送的 HTTP 標頭匹配。如有必要,允許所有標頭:
headersOk := handlers.AllowedHeaders([]string{"*"}) originsOk := handlers.AllowedOrigins([]string{"*"}) methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
檢查 Chrome 開發者工具中的標頭,並考慮仔細重新配置 CORS 設定以與客戶端的標頭保持一致。這將解決您遇到的 CORS 問題。
以上是如何在 Go 中保護 Angular HTTP 請求並處理 CORS?的詳細內容。更多資訊請關注PHP中文網其他相關文章!