首页 >后端开发 >Golang >如何保护 Angular-Go API 通信的安全:添加授权标头?

如何保护 Angular-Go API 通信的安全:添加授权标头?

Susan Sarandon
Susan Sarandon原创
2024-12-16 04:13:17681浏览

How to Secure Angular-Go API Communication:  Adding Authorization Headers?

如何向 Angular HTTP 请求添加授权标头

当尝试将 Angular 应用程序连接到 Go API 时,必须包含授权HTTP 请求中的标头。这保证了客户端和服务器之间的通信安全。下面演示了如何实现此目的:

Angular 实现:

在 Angular 4 及更高版本中,建议使用 HTTP 拦截器将授权标头一致地应用于请求。下面是拦截器的示例:

import { Injectable } from '@angular/core';
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';

import { Observable } from 'rxjs';

import { AuthService } from './auth.service';

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    req = req.clone({
      setHeaders: {
        Authorization: `Bearer ${AuthService.getToken()}`,
      },
    });

    return next.handle(req);
  }
}

此拦截器可以在 Angular 模块中注册:

import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';

...
providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: AuthInterceptor,
      multi: true,
    },
],
...

Go 实现:

在 Go 中,CORS 标头需要与 Angular 应用程序发送的标头匹配。要允许所有标头,请使用以下内容:

headersOk := handlers.AllowedHeaders([]string{"*"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})

或者,仔细定义允许的标头。

采取这些步骤后,应成功传输和接受授权标头,从而启用Angular 和 Go 之间的通信。

以上是如何保护 Angular-Go API 通信的安全:添加授权标头?的详细内容。更多信息请关注PHP中文网其他相关文章!

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