首页 >后端开发 >Golang >如何在 Go 中保护 Angular HTTP 请求并处理 CORS?

如何在 Go 中保护 Angular HTTP 请求并处理 CORS?

Patricia Arquette
Patricia Arquette原创
2024-12-13 21:25:12295浏览

How to Secure Angular HTTP Requests and Handle CORS in Go?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn