Benutzer-Werkzeuge

Webseiten-Werkzeuge


webservice:custom_clients

Eigene webservice_SmartGate Clients

Best-Practices allgemein

Folgende Best-Practices haben sich unabhängig der Programmiersprache des Clients bei der Entwicklung eigener Zugriffsbibliotheken bewährt:

  • Verwenden Sie eine für Ihre Sprache/Plattform vorhandene, verbreitete und stabile Bibliothek für das durchführen der HTTP(S)-Zugriffe (siehe auch Hilfsprogramme). Verschwenden Sie keine Zeit mit dem Versuch das HTTP-Protokoll „nachzubauen“.
  • Implementieren Sie die richtige Fehlerbehandlung.
  • Fordern Sie per Accept-Encoding-Header ein komprimiertes Ergebnis vom webservice_SmartGate
  • Prüfen Sie ob wirklich HTTP keep-alive von ihrer Bibliothek verwendet wird. Eventuell muss dies aktiviert werden.
  • Setzen Sie die Timeouts für Anfragen nicht zu hoch. Werte von 5 oder 10 Sekunden sollten ausreichen.
  • Senden Sie folgende Header, damit wir sie optimal bei Fehlerdiagnose und Performanceoptimierung unterstützen können
    • Referer In einer Webanwendung ist dies in der Regel die von Kunden aufgerufene URL inkl. Parameter die zum agora-Methodenaufruf geführt hat.
    • User-Agent Versionshinweise der verwendeten Bibliothek(en), zum Beispiel curl/7.19.7 NSS/3.13.1.0 zlib/1.2.3. Dies zeigt insbesondere die auch die Versionsinfos zur ssl- und zlib-Bibliothek an.
  • Für weitergehende Auswertungen in unserem Data-Warehouse senden Sie bei Bedarf X-Track--Header. Folgende Header empfehlen wir:
    • X-Track-Server-Name Name des Servers von dem die Anfrage gesendet wurde (i.d.R. ein virtueller Host).
    • X-Track-Client-User-Agent User-Agent des Clients der die agora-Methode ausgelöst hat. Dient im wesentlichen des Trackings von Bots.

libcurl

Hier ein praktisches Beispiel für die Optionen die bei Verwendung der cURL Bibliothek sinnvoll sind:

curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->handle, CURLOPT_HEADER, true);
// Differenzierte Timeouts für Verbindung und komplette Anfrage
curl_setopt($this->handle, CURLOPT_TIMEOUT, 10);
curl_setopt($this->handle, CURLOPT_CONNECTTIMEOUT, 2);
// Leerer Wert sendet alle verfügbaren Kompressionsmethoden
curl_setopt($this->handle, CURLOPT_ENCODING, '');
 
// Setzen des Referee-Headers
if(isset($_SERVER['REQUEST_URI']))
	curl_setopt($this->handle, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
else
	curl_setopt($this->handle, CURLOPT_REFERER,$_SERVER['PHP_SELF']);
 
// Versionsinformation zusammenbauen			
$curlinfo = curl_version();
curl_setopt(
	$this->handle, 
	CURLOPT_USERAGENT,
	'curl/'.$curlinfo['version'].' '.$curlinfo['ssl_version'].' zlib/'.$curlinfo['libz_version']
);
 
// Optional: Übergabe von X-Track-Headern
 
if (isset($_SERVER['SERVER_NAME']))
	$this->headerFields[] = 'X-Track-Server-Name: '.$_SERVER['SERVER_NAME'];
 
if (isset($_SERVER['HTTP_USER_AGENT']))
	$this->headerFields[] = 'X-Track-Client-User-Agent: '.$_SERVER['HTTP_USER_AGENT'];
 
$this->headerFields[] = 'X-Track-Client-Addr:'.(isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']);
 
curl_setopt($this->handle, CURLOPT_HTTPHEADER,$this->headerFields);
webservice/custom_clients.txt · Zuletzt geändert: 13.11.2014 (Externe Bearbeitung)