在 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中文网其他相关文章!