Ho appena testato il tuo esempio di comando curl in locale e funziona perfettamente, quindi la sintassi è corretta. È possibile che il proxy stia rimuovendo alcuni header? Questo potrebbe spiegare gli errori BAD CSRF, poiché le credenziali API non possono più essere lette o accessibili.
Il nostro proxy è completamente personalizzato, sviluppato internamente, e funge da livello frontale per il pubblico.
Sono connesso tramite VPN alla nostra rete interna e non sto raggiungendo l’URL pubblico, ma quello del backend (dietro il proxy), quindi le richieste non dovrebbero passare attraverso il proxy.
La nostra istanza di staging di Discourse è la versione 2.3.10.
L’API si comporta diversamente in quella versione?
No, la versione 2.3.10 include ancora tutte le funzionalità di autenticazione basate sugli header, quindi il comportamento non dovrebbe essere diverso.
Stai colpendo questa riga:
il che significa che la tua richiesta è in qualche modo malformata e non riesce a rilevare che si tratta di una richiesta API.
Poiché si tratta di un’istanza di staging e non locale, avrai nginx o un altro server web in esecuzione prima che la richiesta raggiunga Discourse. È possibile che nginx stia rimuovendo alcune intestazioni a seconda della tua configurazione. Queste potrebbero essere visibili nei log di nginx.
Questa è la riga in cui vengono lette le credenziali API dalle intestazioni della richiesta. Potresti anche aggiungere alcune istruzioni di debug a questo file per verificare se le intestazioni arrivano fino a questo punto.