Ich versuche eine Chrome-Erweiterung zu erstellen, die einige Details aus Pull-Anforderungen auf Github mithilfe der Fetch-API löscht und dann an anderer Stelle anzeigt. Ich stoße auf einige Probleme, wenn ich versuche, dies mit einem nicht öffentlichen Repository auf Github zu verwenden. Ich glaube, dass dies mit dem CSRF-Schutz zusammenhängt und dass die Regeln für Chrome-Erweiterungen Zugriff auf Sitzungscookies haben.Abruf-API sendet keine Sitzungscookies, wenn sie in einer Chrome-Erweiterung verwendet wird
Ich habe folgendes in meiner Erweiterung der manifest.json
:
"content_scripts": [{
"matches": [
"*://github.com/*/*/pulls"
],
"js": ["script/underscore-1.8.3.min.js", "script/content.js"]
}],
"permissions": [
"tabs",
"activeTab",
"*://github.com/*",
"webNavigation"
]
Aber wenn ich laufe folgendes aus: In meinem script/content.js
:
fetch('/redacted/redacted/pull/4549', {credentials: 'same-origin'}).then((response) => {
return response.text();
}).then((text) => {
// do cool stuff
})
Dies erzeugt eine 404-Antwort von Github. Wenn ich diese Anfrage über die Netzwerkregisterkarte von Chrome Inspector überprüfe, kann ich feststellen, dass meine GitHub-Sitzungs-Kopfzeile nicht mit der Anfrage gesendet wird.
Wenn ich die gleiche Anforderung mit der Javascript-Eingabeaufforderung im Inspector mache, kann ich eine 200-Antwort sehen, und ich kann sehen, dass es ist meine Session-Cookies zu senden.
Mein Verständnis war, dass die Angabe der Github-Domain in meinem manifest.json
bedeuten würde, dass meine Erweiterung Zugriff auf meine Sitzungsdaten in meinen Inhaltsskripten hätte, ist das nicht korrekt? Was muss ich tun, um eine gültige Anfrage an diesen geschützten Inhalt zu stellen?
Ich habe dieses Problem auch, fetch einfach nicht senden Cookies auch mit 'credentials: 'same-Herkunft'', während XHR einfach alles senden, scheint wie ein Fehler für mich. – Daiwei