valyala/fasthttp · info

fasthttp: no cookies found

Error message

fasthttp: no cookies found

What it means

ErrNoCookies is returned by Response/Header & Cookie parsing helpers when scanning a Cookie header finds no valid cookies at all. The library distinguishes 'nothing to parse' from 'malformed value'. It signals an empty or entirely invalid cookie list.

Source

Thrown at cookie.go:379

	c.bufK = c.AppendBytes(c.bufK[:0])
	return c.bufK
}

// String returns cookie representation.
func (c *Cookie) String() string {
	return string(c.Cookie())
}

// WriteTo writes cookie representation to w.
//
// WriteTo implements io.WriterTo interface.
func (c *Cookie) WriteTo(w io.Writer) (int64, error) {
	n, err := w.Write(c.Cookie())
	return int64(n), err
}

var (
	ErrNoCookies          = errors.New("fasthttp: no cookies found")
	ErrInvalidCookieValue = errors.New("fasthttp: invalid cookie value")
)

// Parse parses Set-Cookie header.
func (c *Cookie) Parse(src string) error {
	c.bufK = append(c.bufK[:0], src...)
	return c.ParseBytes(c.bufK)
}

// ParseBytes parses Set-Cookie header.
func (c *Cookie) ParseBytes(src []byte) error {
	c.Reset()

	var s cookieScanner
	s.b = src

	var k, v []byte
	if !s.nextRaw(&k, &v) {

View on GitHub (pinned to c96f600972)

Solutions

  1. Check whether the Cookie header exists before parsing cookies
  2. Treat ErrNoCookies as 'no session yet' and proceed to login/set-cookie flow
  3. Guard iteration with a len check on the raw header value

Example fix

// before
cookies := resp.Header.Cookies() // may return ErrNoCookies
// after
if len(resp.Header.Peek("Cookie")) == 0 {
    return nil // no cookies yet, skip parsing
}
cookies := resp.Header.Cookies()
Defensive patterns

Strategy: type-guard

Validate before calling

if len(resp.Header.Peek("Cookie")) == 0 {
    return nil // nothing to parse
}

Type guard

func hasCookies(h *fasthttp.ResponseHeader) bool {
    return len(h.Peek("Cookie")) > 0
}

Try / catch

if err := parseCookies(h); errors.Is(err, fasthttp.ErrNoCookies) {
    return cookieSet{} // empty set is fine
}

Prevention

When it happens

Trigger: Calling Response.Header.Cookies() / Response.Header.peek of Cookie header when the request/response carries no Cookie header or only whitespace; iterating cookies over an empty header.

Common situations: First request of a session with no cookies set yet; proxies stripping Cookie headers; code assuming cookies always exist after a redirect.

Related errors


AI-assisted analysis of valyala/fasthttp@c96f600972 (2026-08-31). Data as JSON: /api/errors/044feda6478f75e8. Report an issue: GitHub.