EarlyData


Fiber용 Early Data 미들웨어는 TLS 1.3의 early data("0-RTT") 기능을 지원합니다.

RFC 8446을 인용하면, 클라이언트와 서버가 PSK를 공유할 때 TLS 1.3은 클라이언트가 요청 속도를 높이기 위해 첫 번째 플라이트("early data")에서 데이터를 보낼 수 있도록 허용하여 일반적인 1-RTT 요청을 0-RTT 요청으로 효과적으로 줄입니다.

이 미들웨어를 사용하기 전에 클라이언트의 거짓 HTTP 요청 헤더를 신뢰하지 않도록 fiber의 EnableTrustedProxyCheck 구성 옵션을 활성화해야 합니다.

또한 리버스 프록시(예: nginx, ssl_early_data on;으로 간단히 수행)에서 early data 지원을 활성화하면 요청을 재생할 수 있습니다. 계속하기 전에 다음 문서를 참조하십시오:

기본적으로 이 미들웨어는 안전한 HTTP 요청 메서드에 대해서만 early data 요청을 허용하고 그렇지 않으면 요청을 거부합니다. 즉, 핸들러를 실행하기 전에 요청을 중단합니다. 이 동작은 AllowEarlyData 구성 옵션으로 제어할 수 있습니다.

안전한 HTTP 메서드(GET, HEAD, OPTIONS, TRACE)는 서버의 상태를 수정해서는 안 됩니다.

Signatures

func New(config ...Config) fiber.Handler

Examples

Fiber 웹 프레임워크의 일부인 미들웨어 패키지를 가져옵니다.

import (
  "github.com/gofiber/fiber/v2"
  "github.com/gofiber/fiber/v2/middleware/earlydata"
)

Fiber 앱을 초기화한 후 다음과 같은 방법을 사용할 수 있습니다:

// 기본 구성 초기화
app.Use(earlydata.New())

// 또는 사용자 지정을 위해 구성 확장
app.Use(earlydata.New(earlydata.Config{
  Error: fiber.ErrTooEarly,
  // ...
}))

Config

속성
타입
설명
기본값

Next

func(*fiber.Ctx) bool

Next는 true를 반환할 때 이 미들웨어를 건너뛰는 함수를 정의합니다.

nil

IsEarlyData

func(*fiber.Ctx) bool

IsEarlyData는 요청이 early-data 요청인지 여부를 반환합니다.

"Early-Data" 헤더가 "1"과 같은지 확인하는 함수

AllowEarlyData

func(*fiber.Ctx) bool

AllowEarlyData는 early-data 요청을 허용할지 거부할지 여부를 반환합니다.

안전하지 않은 경우 거부하고 안전한 메서드는 허용하는 함수

Error

error

early-data 요청이 거부되는 경우 Error가 반환됩니다.

fiber.ErrTooEarly

Default Config

var ConfigDefault = Config{
  IsEarlyData: func(c *fiber.Ctx) bool {
    return c.Get(DefaultHeaderName) == DefaultHeaderTrueValue
  },
  AllowEarlyData: func(c *fiber.Ctx) bool {
    return fiber.IsMethodSafe(c.Method())
  },
  Error: fiber.ErrTooEarly,
}

Constants

const (
  DefaultHeaderName = "Early-Data"
  DefaultHeaderTrueValue = "1"
)

Last updated