Skip to content

fix: use fetch adapter for OPNsense 25.x compatibility#2

Open
cmatta wants to merge 1 commit into
Pixelworlds:masterfrom
cmatta:fix/fetch-adapter-opnsense-25x
Open

fix: use fetch adapter for OPNsense 25.x compatibility#2
cmatta wants to merge 1 commit into
Pixelworlds:masterfrom
cmatta:fix/fetch-adapter-opnsense-25x

Conversation

@cmatta

@cmatta cmatta commented Dec 28, 2025

Copy link
Copy Markdown

Addresses issue #1

Summary

Use axios fetch adapter instead of HTTP adapter to fix compatibility with OPNsense 25.x.

Problem

API requests fail with HTTP 400: Invalid header received from client on OPNsense 25.x due to stricter HTTP header validation in lighttpd 1.4.82+.

Root Cause

OPNsense 25.x upgraded to lighttpd 1.4.82, which introduced stricter HTTP header validation:

"stricter HTTP request/response header, trailer, and chunked validation/parsing"

The axios HTTP adapter (used by default in Node.js) sends headers that pass validation on older lighttpd versions but are rejected by lighttpd 1.4.82+.

The axios fetch adapter sends cleaner headers that pass the stricter validation.

Fix

Add adapter: 'fetch' to the axios configuration in src/http-client.ts.

Impact

  • Users on OPNsense 24.x and earlier: unaffected (older lighttpd is more permissive)
  • Users on OPNsense 25.x: completely broken without this fix

Testing

Tested against OPNsense 25.7.8 - all API calls now succeed.

Notes

  • The fetch adapter is available in axios since v1.7.0 and works in Node.js 18+
  • This is a one-line fix with no breaking changes for existing users
  • The fetch adapter may require NODE_TLS_REJECT_UNAUTHORIZED=0 for self-signed certificates (the httpsAgent option doesn't apply to fetch)

OPNsense 25.x includes lighttpd 1.4.82 which has stricter HTTP header
validation. The axios HTTP adapter sends headers that are rejected with
"Invalid header received from client" (HTTP 400).

The fetch adapter sends cleaner headers that pass validation.

This is a one-line fix that makes the client compatible with both older
OPNsense versions and 25.x+.

See: https://www.lighttpd.net/2025/9/12/1.4.82/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant