litespeedtech / litespeedtech/openlitespeed

PHP response headers stripped over QUIC/HTTP3 (CORS not working with Chrome)

Open
#480 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
1.5k
Forks
233
Avg merge
2d 19h
Merged PRs (30d)
5

Description

**OLS Version:** 1.9.0
**OS:** Debian 12 (Kernel 6.1.164-1)

**Problem:**
PHP-set response headers (specifically CORS headers) are stripped
when the request arrives over QUIC/HTTP3. The same PHP code produces
correct headers over HTTP/2.

**Evidence from OLS error log:**
Both H2 and QUIC requests call the same PHP file (confirmed via STDERR):

HTTP/2: [H2-1#***:lsapi] [STDERR] [log.php] called
QUIC: [-Q:EC9CFEBAB33ABEDD-0#***:lsapi] [STDERR] [log.php] called

But only HTTP/2 responses include the PHP-set CORS headers.

**Browser comparison:**
- Microsoft Edge → uses HTTP/2 → CORS headers present → works ✓
- Google Chrome → uses QUIC → CORS headers missing → blocked ✗

This rules out a browser bug — both browsers receive different
headers from the same server for the same PHP code.

**curl verification:**
curl (HTTP/2): access-control-allow-origin present ✓
curl (HTTP/1.1): access-control-allow-origin present ✓

**Workaround:**
Disabled HTTP3 in vHost SSL settings (ALPN → HTTP/2 only).

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the comparison between HTTP/2 and QUIC/HTTP3 using the reported PHP response and curl checks, then trace the QUIC response path through the LSAPI/PHP integration. Compare how response headers are collected and emitted for H2 versus QUIC, and verify that the CORS headers remain present over HTTP/3 without disabling it.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, php
Domain
backend, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.