Go Fiber 한글 공식 문서
  • 🙇‍♀️안녕하세요
  • 🏠Home
    • 👋Welcome
    • 📁API
      • 📦Fiber
      • 🚀App
      • 🧠Ctx
      • 📋Constants
      • 🌎Client
      • 📃Log
      • 🧬Middleware
        • Adaptor
        • BasicAuth
        • Cache
        • Compress
        • CORS
        • CSRF
        • EarlyData
        • Encrypt Cookie
        • EnvVar
        • ETag
        • ExpVar
        • Favicon
        • FileSystem
        • Health Check
        • Helmet
        • Idempotency
        • Keyauth
        • Limiter
        • Logger
        • Monitor
        • Pprof
        • Proxy
        • Recover
        • Redirect
        • RequestID
        • Rewrite
        • Session
        • Skip
        • Timeout
    • 📁Guide
      • 🔌Routing
      • 🎭Grouping
      • 📝Templates
      • 🐛Error Handling
      • 🔎Validation
      • 🎣Hooks
      • ⚡Make Fiber Faster
    • 📁Extra
      • 🤔FAQ
      • 📊Benchmarks
  • 🧩Extra
    • 🧬Contrip
      • 👋Welcome
      • Casbin
      • Fgprof
      • Fiberi18n
      • Fibernewrelic
      • Fibersentry
      • Fiberzap
      • Fiberzerolog
      • JWT
      • LoadShed
      • Opafiber
      • Otelfiber
        • Example
      • Paseto
      • README
      • Swagger
      • Websocket
    • 📦Storage
      • 👋Welcome
      • ArangoDB
      • Azure Blob
      • Badger
      • Bbolt
      • Coherence
      • Couchbase
      • DynamoDB
      • Etcd
      • Memcache
      • Memory
      • Minio
      • MongoDB
      • MSSQL
      • MySQL
      • Nats
      • Pebble
      • Postgres
      • Redis
      • Ristretto
      • Rueidis
      • S3
      • ScyllaDb
      • SQLite3
    • 📃Template
      • 👋Welcome
      • Ace
      • Amber
      • Django
      • Handlebars
      • HTML
        • Golang Templates Cheatsheet
      • Jet
      • Mustache
      • Pug
      • Slim
Powered by GitBook
On this page
  • Signatures
  • Examples
  • Config
  • Default Config
  • Constants
  1. Home
  2. API
  3. Middleware

EarlyData

PreviousCSRFNextEncrypt Cookie

Last updated 1 year ago


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

을 인용하면, 클라이언트와 서버가 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"
)
🏠
📁
🧬
Fiber
RFC 8446
https://datatracker.ietf.org/doc/html/rfc8446#section-8
https://blog.trailofbits.com/2019/03/25/what-application-developers-need-to-know-about-tls-early-data-0rtt