Sto provando a creare un'estensione di Chrome che cancella alcuni dettagli da Pull Requests su Github utilizzando l'API di recupero e quindi li visualizza altrove. Sto incontrando alcuni problemi quando cerco di usarlo con un repository non pubblico su Github. Credo che questo sia legato alla protezione CSRF e alle regole che regolano le estensioni di Chrome che hanno accesso ai cookie di sessione.L'API di recupero non invia cookie di sessione quando viene utilizzata all'interno di un'estensione di Chrome
Ho il seguente in del manifest.json
mia estensione:
"content_scripts": [{
"matches": [
"*://github.com/*/*/pulls"
],
"js": ["script/underscore-1.8.3.min.js", "script/content.js"]
}],
"permissions": [
"tabs",
"activeTab",
"*://github.com/*",
"webNavigation"
]
Ma quando ho eseguito il seguente da dentro il mio script/content.js
:
fetch('/redacted/redacted/pull/4549', {credentials: 'same-origin'}).then((response) => {
return response.text();
}).then((text) => {
// do cool stuff
})
Questo produce una risposta 404 da Github. Ispezionando questa richiesta con la scheda di rete di Chrome Inspector, posso vedere che non sta inviando la mia intestazione di sessione GitHub con la richiesta.
Se faccio la stessa richiesta utilizzando il prompt di Javascript nell'Inspector, posso vedere una risposta di 200, e posso vedere che è è inviare i miei cookie di sessione.
La mia comprensione è stata che specificando il dominio Github nel mio manifest.json
significherebbe che la mia estensione avrebbe accesso ai miei dati di sessione negli script di contenuto, non è corretto? Cosa dovrei fare per fare una richiesta valida a questo contenuto protetto?
Ho anche questo problema, semplicemente non inviamo cookie anche con 'credenziali: 'same-origin'', mentre XHR semplicemente invia tutto, mi sembra un bug. – Daiwei