Header-Felder
Header-Felder sind Bestandteil einer HTTP-Nachricht und dienen dazu, zusätzliche Informationen zwischen Client und Server auszutauschen. Sie beschreiben nicht den eigentlichen Nutzdateninhalt, sondern liefern Metadaten zur Anfrage oder Antwort. Typische Beispiele sind Informationen zum Datenformat, zur Authentifizierung, zur gewünschten Komprimierung oder zum Verhalten der Verbindung.
Ein Header-Feld besteht aus einem Feldnamen und einem zugehörigen Wert. Der Feldname beschreibt die Bedeutung des Eintrags, der Wert enthält die konkrete Information. Beispiele hierfür sind Content-Type, Accept, Authorization oder User-Agent.
Accept: application/json
Content-Type: application/json
Authorization: Bearer <Token>
User-Agent: TwinCAT HTTP Client
Host: example.com
Connection: close
Cache-Control: no-cache
Accept-Encoding: gzipBei einer HTTP-Anfrage können Header-Felder verwendet werden, um dem Server zusätzliche Informationen zur Verarbeitung der Anfrage zu übergeben. Dazu gehört beispielsweise das Datenformat des gesendeten Inhalts oder das gewünschte Format der Antwort. Bei REST APIs wird häufig JSON verwendet. In diesem Fall kann Content-Type: application/json angeben, dass der Body JSON-Daten enthält, während Accept: application/json signalisiert, dass die Antwort ebenfalls im JSON-Format erwartet wird. Auch Authentifizierungsinformationen, z. B. ein Bearer-Token im Feld Authorization, werden häufig über Header-Felder übertragen.
In TwinCAT kann ein HTTP-Request um zusätzliche Header-Felder ergänzt werden. Dadurch lassen sich Anforderungen einer REST API direkt aus dem SPS-Kontext berücksichtigen. Die Header-Felder werden vor dem Senden der Anfrage mit dem Baustein FB_IotHttpHeaderFieldMap erstellt und anschließend dem HTTP-Kommando übergeben.
Automatisch gesetzte Header-Felder
Bestimmte Header-Felder werden von TwinCAT automatisch erzeugt oder aus den Parametern der verwendeten Funktionsbausteine abgeleitet. Diese Felder sind für die manuelle Bearbeitung durch den Benutzer gesperrt, um eine konsistente HTTP-Anfrage sicherzustellen. Für solche Header-Felder müssen die vorgesehenen Eigenschaften oder Eingänge der jeweiligen Funktionsbausteine verwendet werden. Zusätzliche, vom Server geforderte Header-Felder können über den Funktionsbaustein ergänzt werden.
Im Folgenden finden Sie eine Auflistung der eingeschränkt bearbeitbaren Header-Felder:
- Accept-Encoding: Wird automatisch auf gzip, deflate gesetzt.
- Connection: Entweder keep-alive oder close, wird über den FB_IotHttpClient gesetzt.
- Content-Length: Wird bei Requests mit Payload automatisch gesetzt.
- Content-Type: Wird über den FB_IotHttpRequest gesetzt.
- Host: Wird aus Hostname und Port zusammengesetzt, die im FB_IotHttpClient konfiguriert sind.