2016-07-09 12 views
0

Ich schreibe eine Chrome-App für die Diagnose von Webdiensten. Ich möchte in der Lage sein, eine GET-Anfrage an eine URL zu senden und die Header und Daten in der Antwort zu betrachten.Ignorieren von HSTS in der Chrome-App/-Erweiterung

Mein Problem ist, wenn ein Benutzer eine Website mit dem HSTS-Header vor der Verwendung meiner App aufruft, kann meine App keine GET-Anforderungen an die http: // URLs für diese Domain senden, da Chrome das http automatisch konvertiert : // URLs zu https: // Einsen bevor die Anfrage gesendet wird.

Gibt es überhaupt etwas, was ich tun kann, um das zu verhindern? Ich habe die webrequest API und das webview Tag untersucht, aber ich finde nichts, das mich HSTS ignorieren lässt.

Kann ich dafür https://developer.chrome.com/apps/sockets_tcp verwenden (ich müsste http, https und gziped Daten unterstützen können)?

Antwort

0

Gibt es überhaupt etwas, was ich tun kann, um dies zu verhindern?

Wahrscheinlich nicht. Wenn Sie bereits <webview> getestet haben und es die HSTS-Liste mit dem Browser teilt, wird die Netzwerkebene dies für Sie transparent umschreiben.

Ist es möglich, chrome.sockets.tcp dafür zu verwenden?

Technisch gesehen, ja, HSTS sollte dafür keine Rolle spielen. In der Praxis müssten Sie etwas wie wget + SSL + gzip von Grund auf implementieren (in JS, NaCl oder einem nativen Host - aber in letzterem Fall brauchen Sie nicht wirklich eingebaute Sockets).

+0

Aus Ihrer Sicht, in der Praxis ist es dann wirklich nicht möglich (ohne grundlegende Implementierung von wget selbst in Chrome, die eine riesige Menge an Arbeit wäre)? Gibt es vorhandene NaCI- oder Native-Host-Bibliotheken, die so etwas tun? – hvrpn

+0

Ich habe nicht wirklich in die Existenz solcher Bibliotheken für NaCl gesucht; [Native Messaging] (https://developer.chrome.com/extensions/nativeMessaging) ermöglicht es Ihnen, _actually_ '' wget' 'oder ähnliches zu nennen, aber es ist ein unhandlicher großer Hammer. Leider (oder glücklicherweise?) Ist HSTS in die Chrome-Plattform integriert, die die Laufzeit für Chrome Apps bereitstellt. Vielleicht sollten Sie nach alternativen App-Frameworks suchen (Elektron? Node-WebKit? Bedarf Forschung). – Xan