Da tempo sto affrontando un problema che non sembra essere stato ancora segnalato. Mi scuso per la complessità della situazione, ma cercherò di descriverla in modo conciso.
In sintesi: quando incollo un link in un messaggio, il Ruby Gem che effettua la richiesta HTTP GET a quell’URL per recuperare i dati di embedding invia una richiesta che alcuni proxy HTTP considerano non valida secondo le specifiche. Questo impedisce il corretto funzionamento delle anteprime in alcuni casi:
La versione leggermente più dettagliata è questa. Utilizziamo un ottimo servizio chiamato Gitbook.io per la nostra documentazione. Gitbook è una soluzione ospitata e utilizza Cloudflare Workers per le reindirizzamenti interni sul proprio sito. Parte di questi Cloudflare Workers prevede l’uso della Node Fetch API per proxyficare le richieste HTTP. Gli sviluppatori di Node Fetch sono estremamente rigorosi nel rispetto delle specifiche e rifiutano qualsiasi richiesta GET che abbia un corpo HTTP o anche solo un header Content-Length, anche se impostato a 0.
Ed è esattamente ciò che sta accadendo. Il gem Ruby che effettua la richiesta HTTP invia un header
Content-Length: 0
che infastidisce moltissimo il proxy di Node Fetch, finendo per causare il rifiuto della richiesta da parte del server remoto. Su diversi forum c’è stato un ampio dibattito sulla validità, secondo le specifiche HTTP, di un corpo nella richiesta GET o anche solo della presenza di un header Content-Length. A me non crea problemi, ma questo non ha fermato gli sviluppatori di Node Fetch dal chiudere ogni issue aperta chiedendo loro di permettere tale semantica.
Purtroppo mi trovo nel mezzo di questa situazione:
- Il progetto Node Fetch rifiuta di considerare valide queste richieste HTTP.
- Il supporto di Cloudflare si rifiuta di aiutarmi perché non ho il controllo sui Worker basati su Node in questione.
- Il supporto di Gitbook si rifiuta di aiutarmi perché sono d’accordo con gli sviluppatori di Fetch (e non sono sicuro che loro si preoccupino davvero).
- E la libreria HTTPrb si rifiuta di rimuovere l’header perché ritengono che sia perfettamente valido.
Quindi mi trovo qui a chiedervi se esiste un modo per controllare o modificare le richieste HTTP GET effettuate per le anteprime dei link, in modo da includere un insieme accettabile di header HTTP tali che i proxy che utilizzano librerie estremamente rigorose come Node Fetch non rifiutino queste richieste.
Se volete provare, ecco un URL di esempio ospitato sui server di Gitbook che utilizza il loro Cloudflare Worker basato su Node Fetch.



