Case-sensitive header matching breaks cookie login for some bridges
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 88/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- electron, typescript
- Ambito
- authentication, desktop
Direzione di ricerca
Inizia in src/webview.ts, in makeRequestWatcher, e verifica come fornisce i campi a checkIfAllFieldsPresent. Sostituisci il controllo della proprietà esatta dell'header con una corrispondenza senza distinzione tra maiuscole e minuscole, quindi verifica che gli header della richiesta con maiuscole e minuscole miste consentano al flusso di accesso tramite cookie di completarsi e chiudere la webview.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
makeRequestWatcher in src/webview.ts matches a required field's header name against details.requestHeaders with a plain property lookup:
if (details.requestHeaders && source.name in details.requestHeaders) {
output[field.id] = details.requestHeaders[source.name]
}
HTTP header names are case-insensitive, but this is an exact, case-sensitive JS property check. In practice, sites send the same header with inconsistent casing across requests — e.g. LinkedIn sends X-LI-Track capitalized on some requests but x-li-page-instance lowercase on others. When the server-declared field name (X-LI-Page-Instance) never matches the wire casing exactly, checkIfAllFieldsPresent never resolves, so the webview stays open indefinitely.
This reproduces #8 exactly ("Normal login the window never closes... Webview closed before all fields were found"): the LinkedIn cookie login legitimately succeeds, but the client never notices because the header lookup silently fails on casing.
Fix direction: do a case-insensitive key lookup instead of in.
- Lingua principale
- TypeScript
- Stelle
- 63
- Fork
- 8
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di mautrix/manager
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
Tutte le issue di mautrix/manager
Issue simili
-
category::task code priority::normal
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
e0ipso/strikethroo#145 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
cocos/cocos-docs#3333 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
RevenueCat/react-native-purchases#2079 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
RevenueCat/purchases-hybrid-common#2039 ·
I maintainer di solito rispondono entro 1 giorno
-
agent-reported area/react bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno