URL-Weiterleitung mit Chrome webRequest nach Antwort empfangen wird
Ich bin versucht, erstellen Sie eine Google Chrome-Erweiterung nutzt Chrome webRequest Modul zum durchführen einer Umleitung zu einer URL, erhalten aus einer anfänglich zugegriffen URL. Für diese würde ich gerne nutzen, nur Chrome webRequest-Funktionen (z.B., onBeforeSendHeaders, onHeadersReceived) und nicht einfach ein Aufruf von $.ajax() mit der erhaltenen URL. Die gewünschte Funktionalität ist:
- Benutzer gibt eine URL in die Adressleiste
- Ein Antrag gestellt wird und die Sekundär-URL extrahiert aus der HTTP-Antwort
- Die chrome.webRequest.onHeadersReceived - handler leitet den Benutzer auf dem sekundären URL mit dem redirectUrl Attribut der Sperrung Reaktion.
Mein Versuch, dies zu erreichen ist:
chrome.webRequest.onHeadersReceived.addListener(
function(details){
var secondaryURL = extractSecondaryURL(details);
return {redirectUrl: secondaryURL}; //this doesn't work
},
{urls:["http://*/*", "https://*/*"]},
["blocking","responseHeaders"]
);
...aber die Seite wird nie weitergeleitet. Die webRequest-Dokumentation sagt, "Nur als eine Reaktion auf die onBeforeRequest Ereignis." über die redirectUrl - Attribut, das die wahrscheinlich Schuldigen.
Wie wird man führen diese Art der Weiterleitung empfangenen Daten aus dem Antwort-Header und der Chrom-webRequest-Modul?
redirectUrl
im onHeadersReceived
beantragt wurde, auf code.google.com/p/chromium/issues/detail?id=280464. Bitte Sterne die Frage!InformationsquelleAutor Mat Kelly | 2013-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
web-Abfrage API Methoden
So, Idee ist die Speicherung der sekundären URL aus onHeadersReceived Ereignis und Feuer eine
chrome.tabs.reload()
Ereignis, das feuert onBeforeRequest Veranstaltung wieder, die hilft umleiten.Beispiel-Demonstration
Den folgenden ungetestet 🙂 demonstration blockiert alle
Facebook
URL und leitet Sie anGoogle
nach Erhalt der Sekundär-URL, können Sie es weiter.Referenzen
manifest.json
Sicherzustellen, dass alle Berechtigungen sind vorhanden und das register hintergrund Seite mit der Endung.
background.js
Dieser code blockiert alle URL-Anforderung an
Facebook
und leitet Sie anGoogle
.Output
Alle Anfrage(N) zu
Facebook
umgeleitet werdenGoogle
.Yup, das kann etwas verbessert werden, durch die Einstellung der tabID übergeben von callback-auf tabs.reload () - Methode.
Ich habe nur versucht, das Beispiel, aber ich kann Sie nicht umleiten. Ich sehe keine Fehler in der Konsole. Ich irgendetwas fehlen könnte?
InformationsquelleAutor Sudarshan