Angepasster User-Agent String oder Header, ohne cordova libs zu modifizieren

8

Ich habe eine Android Phonegap / Cordova App, die mit einer ASP.NET MVC-Webanwendung interagiert. Ich versuche, serverseitig zu erkennen, ob die Webseite von einem Browser oder von meiner Phonegap / Cordova-App geladen wird.

Es gibt ein paar Methoden, die ich in Betracht gezogen habe:

  1. Ändern Sie die Zeichenfolge des Benutzeragenten. Ich habe diesen Stack-Overflow-Link gefunden, der eine Möglichkeit beschreibt, wie dies funktioniert. Leider hat es bei mir nicht funktioniert. Das Anforderungsobjekt enthielt nicht die benutzerdefinierte User-Agent-Zeichenfolge.
  2. Fügen Sie einen benutzerdefinierten Header-Wert ein. Dies kann durch Ändern der cordova-Bibliothek erfolgen (siehe diese stackoverflow-Verknüpfung .) Das Ändern von Bibliotheken ist jedoch in der Regel eine schlechte Idee, da es in Zukunft zu einem Wartungsproblem wird. (Update: Diese Methode hat nach der ersten Anfrage nicht funktioniert.)
  3. Fügen Sie der Abfragezeichenfolge beim Laden der ersten Seite etwas Spezielles hinzu. Ein Cookie könnte dann gesetzt werden. Dies ist eine Art hässliche Lösung im Vergleich zu einem einfachen Headerwechsel.

Mache ich etwas falsch bei der Benutzer-Agent-String-Änderung? Oder gibt es eine andere Methode, um dies zu erreichen?

    
Danation 29.01.2013, 01:32
quelle

4 Antworten

4

Sieht so aus, als ob es eine Pull-Anfrage für etwas Ähnliches gibt (fügen Sie "cordova / phonegap" zu UAS hinzu)
Ссылка

Hier ist das Herzstück davon.

Also würde ich DroidGap erweitern und außer Kraft setzen public void init (CordovaWebView webView, CordovaWebViewClient webViewClient, CordovaChromeClient webChromeClient) :

%Vor%

Dann können Sie den erweiterten DroidGap verwenden und steuern, wie Sie den User Agent String definieren.

Nur bestätigt das funktioniert, hier ist der vollständige Code mit der aktuellen Cordova-Implementierung:

%Vor%     
Peter Ajtai 08.02.2013, 18:38
quelle
5

Also, für Cordova 5.1.1 und seine Plattformversion von Android 4.0.2 (Was ich bei der Verwendung von Cordova 5.1.1 aus der Box herausgeholt habe), sind diese Antworten nicht mehr gültig.

Nach einigen schwierigen Stökern ist die Lösung für die oben genannten Versionen jetzt die folgende:

Überschreiben Sie in der üblichen MainActivity.java , die standardmäßig von cordova erstellt wird und die CordovaActivity erweitert, die Methode makeWebViewEngine :

%Vor%

In Zukunft, wenn sie die Version der Android-Plattform aktualisieren, sollte dies einfacher durch die config.xml erfolgen, aber es ist keine Option ATM, da ich den Bugfix-Thread CB-8960 kommentiert habe

    
João Antunes 14.07.2015 11:53
quelle
2

@ Peters Antwort kommt dorthin, aber Sie müssen nicht die gesamte init-Methode überschreiben. Hier ist ein einfacher, wartungsfreundlicher Weg:

%Vor%     
phreakhead 11.09.2014 06:40
quelle
1

Wenn Sie eine aktuelle Version von cordova verwenden, überprüfen Sie diese Konfigurationsanleitung auf ihrer Website: Ссылка

Suche nach UserAgent. Es gibt zwei Einstellungen, mit denen Sie entweder etwas an den User-Agent (AppendUserAgent-Einstellung) anhängen oder die User-Agent-Einstellung (OverrideUserAgent-Einstellung) überschreiben können.

Zum Beispiel habe ich in meinem Android-Projekt in der Datei res / xml / config.xml die Einstellung

hinzugefügt %Vor%

Wenn ich dies anwende, ändert sich mein User-Agent in etwas wie:

%Vor%     
Victor Ionescu 30.06.2016 08:56
quelle