Mehr

Datumsfeld mit Datumsvariable und Zeitattribut in einer Feature-Class berechnen


Ich habe eine String-Variable (fileDateString) mit dem Datum in diesem Format: 20150404

In meiner Feature-Class gibt es ein Textfeld mit der Uhrzeit im 24-Stunden-UTC-Format. Es gibt auch 2 führende Leerzeichen vor der Zeit. Z.B. "1300"

Ich habe meiner Feature-Class ein Datumsfeld hinzugefügt und möchte ein Datum/eine Uhrzeit berechnen. Ich möchte auch in der Lage sein, für das Endergebnis 6 Stunden vom Datum / der Uhrzeit abzuziehen (UTC in CST umzuwandeln).

Ich dachte darüber nach, zuerst ein Textfeld mit Datum und Uhrzeit zu erstellen und dann in ein Datum umzuwandeln, frage mich aber, ob es einen einfacheren Weg gibt?

Ausdruck = """ + str(fileDateString) + """ + "!DateUTC!"

Basierend auf den von Ihnen beschriebenen Anforderungen sollte der folgende Python-Ausdruck das tun, wonach Sie suchen:

"datetime.datetime.strptime({} + !date1!.strip(), '%Y%m%d%H%M') - datetime.timedelta(hours=6)".format(repr(fileDateString))

Hinweis: Ich gehe von Monaten vor Tagen in Ihrem String aus. Wenn nicht, vertauschen Sie %m und %d.


So extrahieren Sie Werte aus HTML <input type=&ldquodate&rdquo> mit jQuery

Verwenden einer HTML-Eingabe type="date" und einer Schaltfläche zum Senden. Ich möchte die Variablen Tag , Monat und Jahr mit den entsprechenden Werten aus der Datumseingabe füllen.

der Konsolenfehler sagt mir, dass .getDate() keine Funktion ist.

Ich habe ähnliche Fragen gesehen, aber die Lösungen haben bei mir nicht funktioniert. Wie kann ich Tag, Monat und Jahr aus der Eingabe type="date" extrahieren? Vielen Dank


Java.time

Das in Java 8 und höher integrierte java.time-Framework ersetzt sowohl die alten Date-Time-Klassen, die mit den frühesten Java-Versionen gebündelt wurden, als auch die Joda-Time-Bibliothek. Die java.time-Klassen wurden auf Java 6 und 7 sowie auf Android zurückportiert.

Die Instant-Klasse repräsentiert einen Moment auf der Zeitachse in UTC mit einer Auflösung von Nanosekunden.

Wenden Sie einen Offset-from-UTC (eine Anzahl von Stunden und möglichen Minuten und Sekunden) an, um eine OffsetDateTime zu erhalten.

Noch besser ist es, eine Vollzeitzone anzuwenden, die einen Offset plus eine Reihe von Regeln für den Umgang mit Anomalien wie der Sommerzeit (DST) darstellt.


Da DateTime ein Werttyp ist, können Sie ihm nicht null zuweisen, aber genau für diese Fälle (Fehlen eines Werts) wurde Nullable<T> eingeführt - verwenden Sie stattdessen ein nullable DateTime:

Dies funktioniert, wenn Sie alle X-Zeiten etwas tun müssen (da Sie immer über MinValue liegen), aber tatsächlich subtile Fehler verursachen können (z. B. wenn Sie einige Operatoren verwenden, ohne zuerst zu überprüfen, ob Sie nicht MinValue sind), wenn Sie nicht aufpassen .

Das ist schön und vermeidet die meisten Probleme, während nur 1 oder 2 eingeführt werden.

Es hängt wirklich davon ab, was Sie erreichen möchten.

Sie können eine DateTime-Variable auf '1/1/0001 00:00:00' setzen, aber die Variable selbst darf nicht null sein. Um diese MinTime zu erhalten, verwenden Sie:

Möglicherweise möchten Sie ein Datum, das NULL zulässt, verwenden. Terminzeit? someDate = null

Möglicherweise finden Sie in solchen Fällen Fälle von Personen, die DateTime.Max oder DateTime.Min verwenden, aber ich bezweifle sehr, dass Sie dies tun möchten. Es führt zu Fehlern mit Randfällen, Code, der schwerer zu lesen ist usw.

Die von Ihnen verwendete Methode ( AddWithValue ) konvertiert Nullwerte nicht in Datenbanknullwerte. Sie sollten stattdessen DBNull.Value verwenden:

Dadurch wird der Wert someDate übergeben, wenn er nicht null ist, oder DBNull.Value andernfalls. In diesem Fall wird der richtige Wert an die Datenbank übergeben.

Option 1: Verwenden Sie ein Datum und Uhrzeit, das NULL zulassen kann

Option 2: Verwenden Sie DateTime.MinValue

Ich persönlich würde Variante 1 bevorzugen.

Eine Zeichenfolge ist a Reihenfolge von Charakteren. Daher ist es sinnvoll, einen leeren String zu verwenden, der nur eine leere Zeichenfolge ist.

Aber DateTime ist nur ein einzelner Wert, daher macht es keinen Sinn, von einer „leeren“ DateTime zu sprechen.

Wenn Sie das Konzept „kein Wert“ darstellen möchten, wird dies in .Net als null dargestellt. Und wenn Sie dies mit Werttypen verwenden möchten, müssen Sie sie explizit auf NULL zulassen. Das bedeutet, dass Sie entweder Nullable<DateTime> oder die entsprechende DateTime verwenden? .

DateTime (wie alle Werttypen) hat auch ein Standardwert, die nicht initialisierten Feldern zugewiesen ist, und Sie können sie auch durch new DateTime() oder default(DateTime) abrufen. Aber Sie möchten es wahrscheinlich nicht verwenden, da es ein gültiges Datum darstellt: 1.1.0001 0:00:00.


Die Wahl Zeitstempel Parameter in der Funktion date() gibt einen Zeitstempel an. Wenn es weggelassen wird, werden das aktuelle Datum und die aktuelle Uhrzeit verwendet (wie in den obigen Beispielen).

Die PHP-Funktion mktime() gibt den Unix-Zeitstempel für ein Datum zurück. Der Unix-Zeitstempel enthält die Anzahl der Sekunden zwischen der Unix-Epoche (1. Januar 1970 00:00:00 GMT) und der angegebenen Zeit.

Syntax

Das folgende Beispiel erstellt ein Datum und eine Uhrzeit mit der Funktion date() aus einer Reihe von Parametern in der Funktion mktime():

Beispiel


Berechnen eines Datumsfelds mithilfe der Datumsvariablen und des Zeitattributs in einer Feature-Class - Geografische Informationssysteme

Dieser Abschnitt definiert die Syntax und Semantik aller standardmäßigen HTTP/1.1-Header-Felder. Bei Entitätsheaderfeldern beziehen sich sowohl Sender als auch Empfänger entweder auf den Client oder den Server, je nachdem, wer die Entität sendet und wer sie empfängt.

14.1 Akzeptieren

Das Feld Request-Header akzeptieren kann verwendet werden, um bestimmte Medientypen anzugeben, die für die Antwort akzeptabel sind. Accept-Header können verwendet werden, um anzugeben, dass die Anforderung speziell auf eine kleine Menge gewünschter Typen beschränkt ist, wie im Fall einer Anforderung für ein Inline-Image.

SOLLTE interpretiert werden als "Ich bevorzuge Audio/Basis, aber senden Sie mir jeden Audiotyp, wenn er nach einem Qualitätsverlust von 80 % der beste verfügbare ist."

Wenn kein Kopfzeilenfeld Akzeptieren vorhanden ist, wird angenommen, dass der Client alle Medientypen akzeptiert. Wenn ein Akzeptieren-Header-Feld vorhanden ist und der Server keine Antwort senden kann, die gemäß dem kombinierten Akzeptieren-Feldwert akzeptabel ist, dann SOLLTE der Server eine 406 (nicht akzeptable) Antwort senden.

Ein ausführlicheres Beispiel ist

Verbal würde dies interpretiert werden als "text/html und text/xc sind die bevorzugten Medientypen, aber wenn sie nicht existieren, dann sende die text/x-dvi-Entität, und wenn diese nicht existiert, sende den text/plain Entität."

Medienbereiche können durch spezifischere Medienbereiche oder bestimmte Medientypen überschrieben werden. Wenn mehr als ein Medienbereich für einen bestimmten Typ gilt, hat die genaueste Referenz Vorrang. Beispielsweise,

haben folgenden Vorrang:

Der einem bestimmten Typ zugeordnete Medientyp-Qualitätsfaktor wird bestimmt, indem der Medienbereich mit der höchsten Priorität gefunden wird, der diesem Typ entspricht. Beispielsweise,

würde dazu führen, dass die folgenden Werte verknüpft werden:

14.2 Akzeptieren-Zeichensatz

Das Request-Header-Feld Accept-Charset kann verwendet werden, um anzugeben, welche Zeichensätze für die Antwort akzeptabel sind. Dieses Feld ermöglicht es Clients, die umfassendere oder speziellere Zeichensätze verstehen können, diese Fähigkeit einem Server zu signalisieren, der Dokumente in diesen Zeichensätzen darstellen kann.

Ein Server testet anhand der folgenden Regeln, ob eine Inhaltscodierung gemäß einem Feld „Akzeptieren-Codierung“ akzeptabel ist:

Wenn ein Accept-Encoding-Feld in einer Anfrage vorhanden ist und der Server keine Antwort senden kann, die gemäß dem Accept-Encoding-Header akzeptabel ist, dann SOLLTE der Server eine Fehlerantwort mit dem Statuscode 406 (Not Acceptable) senden.

Wenn in einer Anforderung kein Feld "Akzeptieren-Codierung" vorhanden ist, KANN der Server annehmen, dass der Client jegliche Inhaltscodierung akzeptiert. Wenn in diesem Fall "Identität" eine der verfügbaren Inhaltscodierungen ist, SOLL der Server die Inhaltscodierung "Identität" verwenden, es sei denn, er hat zusätzliche Informationen, dass eine andere Inhaltscodierung für den Client von Bedeutung ist.

14.4 Akzeptieren-Sprache

Das Request-Header-Feld Accept-Language ähnelt Accept, schränkt jedoch den Satz natürlicher Sprachen ein, die als Antwort auf die Anfrage bevorzugt werden. Sprach-Tags sind in Abschnitt 3.10 definiert.

Jedem Sprachbereich KANN ein zugehöriger Qualitätswert gegeben werden, der eine Schätzung der Präferenz des Benutzers für die durch diesen Bereich spezifizierten Sprachen darstellt. Der Qualitätswert ist standardmäßig auf "q=1". Beispielsweise,

würde bedeuten: "Ich bevorzuge Dänisch, akzeptiere aber britisches Englisch und andere Arten von Englisch." Ein Sprachbereich stimmt mit einem Sprach-Tag überein, wenn er genau dem Tag entspricht oder wenn er genau einem Präfix des Tags entspricht, sodass das erste Tag-Zeichen nach dem Präfix "-" ist. Der spezielle Bereich "*", falls im Feld "Sprache akzeptieren" vorhanden, stimmt mit jedem Tag überein, der von keinem anderen Bereich im Feld "Sprache akzeptieren" übereinstimmt.

Der Sprachqualitätsfaktor, der einem Sprach-Tag durch das Feld Accept-Language zugewiesen wird, ist der Qualitätswert des längsten Sprachbereichs im Feld, der dem Sprach-Tag entspricht. Wenn kein Sprachbereich im Feld mit dem Tag übereinstimmt, ist der zugewiesene Sprachqualitätsfaktor 0. Wenn kein Accept-Language-Header in der Anfrage vorhanden ist, wird der Server

SOLLTE davon ausgehen, dass alle Sprachen gleichermaßen akzeptabel sind. Wenn ein Accept-Language-Header vorhanden ist, sind alle Sprachen akzeptabel, denen ein Qualitätsfaktor größer 0 zugewiesen ist.

Es könnte den Datenschutzerwartungen des Benutzers widersprechen, bei jeder Anfrage einen Accept-Language-Header mit den vollständigen sprachlichen Präferenzen des Benutzers zu senden. Eine Diskussion zu diesem Thema finden Sie in Abschnitt 15.1.4.

Da die Verständlichkeit stark vom einzelnen Benutzer abhängt, wird empfohlen, dass Clientanwendungen dem Benutzer die Wahl der sprachlichen Präferenz zur Verfügung stellen. Wenn die Auswahl nicht verfügbar ist, darf das Header-Feld Accept-Language NICHT in der Anfrage angegeben werden.

14.5 Akzeptanzbereiche

14,6 Alter

14.7 Zulassen

14.8 Autorisierung

14.9 Cache-Steuerung

Das Feld Cache-Control general-header wird verwendet, um Anweisungen anzugeben, die von allen Caching-Mechanismen entlang der Anforderungs-/Antwortkette befolgt werden MÜSSEN. Die Direktiven geben ein Verhalten an, das verhindern soll, dass Caches die Anforderung oder Antwort nachteilig beeinflussen. Diese Direktiven überschreiben normalerweise die standardmäßigen Caching-Algorithmen. Cache-Direktiven sind insofern unidirektional, als das Vorhandensein einer Direktive in einer Anforderung nicht bedeutet, dass dieselbe Direktive in der Antwort angegeben werden muss.

Cache-Direktiven MÜSSEN unabhängig von ihrer Bedeutung für diese Anwendung von einer Proxy- oder Gateway-Anwendung durchgereicht werden, da die Direktiven für alle Empfänger entlang der Anforderungs-/Antwort-Kette gelten können. Es ist nicht möglich, eine Cache-Direktive für einen bestimmten Cache anzugeben.

Ein Cache, der dieses Header-Feld sieht, verhält sich auch dann korrekt, wenn der Cache die Community-Cache-Erweiterung nicht versteht, da er auch die private Direktive sieht und versteht und somit standardmäßig auf das sichere Verhalten zurückgreift.

Nicht erkannte Cache-Direktiven MÜSSEN ignoriert werden. Es wird davon ausgegangen, dass jede Cache-Direktive, die wahrscheinlich von einem HTTP/1.1-Cache nicht erkannt wird, mit Standarddirektiven (oder der Standard-Cache-Fähigkeit der Antwort) kombiniert wird, sodass das Cache-Verhalten minimal korrekt bleibt, selbst wenn die Cache versteht die Erweiterung(en) nicht.

14.10 Verbindung

Das Feld Connection general-header ermöglicht es dem Sender, Optionen anzugeben, die für diese spezielle Verbindung erwünscht sind und NICHT von Proxys über weitere Verbindungen kommuniziert werden dürfen.

Der Connection-Header hat die folgende Grammatik:

HTTP/1.1-Proxys MÜSSEN das Connection-Header-Feld analysieren, bevor eine Nachricht weitergeleitet wird, und für jedes Verbindungs-Token in diesem Feld alle Header-Felder mit demselben Namen wie das Verbindungs-Token aus der Nachricht entfernen. Verbindungsoptionen werden durch das Vorhandensein eines Verbindungstokens im Connection-Header-Feld signalisiert, nicht durch ein oder mehrere entsprechende zusätzliche Header-Felder, da das zusätzliche Header-Feld möglicherweise nicht gesendet wird, wenn dieser Verbindungsoption keine Parameter zugeordnet sind.

Im Connection-Header aufgeführte Nachrichtenheader DÜRFEN KEINE End-to-End-Header wie Cache-Control enthalten.

HTTP/1.1 definiert die Verbindungsoption "close" für den Absender, um zu signalisieren, dass die Verbindung nach Abschluss der Antwort geschlossen wird. Beispielsweise,

entweder im Anfrage- oder im Antwort-Header-Feld zeigt an, dass die Verbindung NICHT als 'persistent' (Abschnitt 8.1) betrachtet werden sollte, nachdem die aktuelle Anfrage/Antwort abgeschlossen ist.

HTTP/1.1-Anwendungen, die dauerhafte Verbindungen nicht unterstützen, MÜSSEN in jeder Nachricht die Verbindungsoption "close" enthalten.

Ein System, das eine HTTP/1.0-Nachricht (oder eine niedrigere Version) empfängt, die einen Verbindungs-Header enthält, MUSS für jedes Verbindungs-Token in diesem Feld alle Header-Felder mit demselben Namen wie die Verbindung aus der Nachricht entfernen und ignorieren. Zeichen. Dies schützt vor einer irrtümlichen Weiterleitung solcher Header-Felder durch Pre-HTTP/1.1-Proxys. Siehe Abschnitt 19.6.2.

14.11 Inhaltskodierung

Das Entity-Header-Feld Content-Encoding wird als Modifizierer für den Medientyp verwendet. Falls vorhanden, zeigt sein Wert an, welche zusätzlichen Inhaltscodierungen auf den Entitätskörper angewendet wurden und somit welche Decodierungsmechanismen angewendet werden müssen, um den Medientyp zu erhalten, auf den durch das Inhaltstyp-Header-Feld verwiesen wird. Content-Encoding wird hauptsächlich verwendet, um ein Dokument zu komprimieren, ohne die Identität des zugrunde liegenden Medientyps zu verlieren.

Inhaltscodierungen sind in Abschnitt 3.5 definiert. Ein Beispiel für seine Verwendung ist

Die Inhaltscodierung ist ein Merkmal der durch den Request-URI identifizierten Entität. Typischerweise wird der Entity-Body mit dieser Codierung gespeichert und nur vor dem Rendern oder einer analogen Verwendung decodiert. Ein nicht transparenter Proxy KANN jedoch die Inhaltscodierung modifizieren, wenn bekannt ist, dass die neue Codierung für den Empfänger akzeptabel ist, es sei denn, die Cache-Steuerungsdirektive "keine Transformation" ist in der Nachricht vorhanden.

Wenn die Inhaltscodierung einer Entität nicht "Identität" ist, MUSS die Antwort einen Inhaltscodierenden Entitätsheader (Abschnitt 14.11) enthalten, der die verwendeten Nicht-Identitäts-Inhaltscodierungen auflistet.

Wenn die Inhaltscodierung einer Entität in einer Anforderungsnachricht für den Ursprungsserver nicht akzeptabel ist, SOLLTE der Server mit dem Statuscode 415 (Nicht unterstützter Medientyp) antworten.

Wenn mehrere Codierungen auf eine Entität angewendet wurden, MÜSSEN die Inhaltscodierungen in der Reihenfolge aufgelistet werden, in der sie angewendet wurden. Zusätzliche Informationen über die Codierungsparameter KÖNNEN von anderen Entitäts-Header-Feldern bereitgestellt werden, die nicht durch diese Spezifikation definiert sind.

14.12 Inhaltssprache

Das Entity-Header-Feld Content-Language beschreibt die natürliche(n) Sprache(n) der beabsichtigten Zielgruppe für die eingeschlossene Entität. Beachten Sie, dass dies möglicherweise nicht allen Sprachen entspricht, die im Entity-Body verwendet werden.

Sprach-Tags sind in Abschnitt 3.10 definiert. Der Hauptzweck von Content-Language besteht darin, einem Benutzer zu ermöglichen, Entitäten gemäß der eigenen bevorzugten Sprache des Benutzers zu identifizieren und zu unterscheiden. Wenn der Inhalt des Hauptteils nur für ein dänisch gebildetes Publikum bestimmt ist, ist das entsprechende Feld field

Wenn keine Inhaltssprache angegeben ist, ist der Inhalt standardmäßig für alle Sprachzielgruppen bestimmt. Dies kann bedeuten, dass der Absender sie nicht als spezifisch für eine natürliche Sprache ansieht oder dass der Absender nicht weiß, für welche Sprache sie bestimmt ist.

Für Inhalte, die für mehrere Zielgruppen bestimmt sind, KÖNNEN mehrere Sprachen aufgelistet werden. Zum Beispiel würde eine Version des "Treaty of Waitangi", die gleichzeitig in der ursprünglichen Maori- und der englischen Version präsentiert wird, verlangen, dass

Nur weil in einer Entität mehrere Sprachen vorhanden sind, bedeutet dies jedoch nicht, dass sie für mehrere sprachliche Zielgruppen bestimmt ist. Ein Beispiel wäre eine Einführung in die Sprache für Anfänger, wie "A First Lesson in Latin", die eindeutig für ein englischsprachiges Publikum gedacht ist. In diesem Fall würde die Inhaltssprache korrekterweise nur "en" enthalten.

Inhaltssprache KANN auf jeden Medientyp angewendet werden -- sie ist nicht auf Textdokumente beschränkt.

14.13 Inhaltslänge

Das Entity-Header-Feld Content-Length gibt die Größe des Entity-Bodys in dezimaler Anzahl von OCTETs an, die an den Empfänger gesendet wurde, oder im Fall der HEAD-Methode die Größe des Entity-Body, der gesendet worden wäre die Anfrage war ein GET.

Anwendungen SOLLTEN dieses Feld verwenden, um die Übertragungslänge des Nachrichtentexts anzugeben, es sei denn, dies ist durch die Regeln in Abschnitt 4.4 verboten.

Jede Inhaltslänge größer oder gleich Null ist ein gültiger Wert. Abschnitt 4.4 beschreibt, wie man die Länge eines Message-Bodys bestimmt, wenn keine Content-Length angegeben wird.

Beachten Sie, dass sich die Bedeutung dieses Felds erheblich von der entsprechenden Definition in MIME unterscheidet, wo es sich um ein optionales Feld handelt, das innerhalb des Inhaltstyps "Nachricht/externer Text" verwendet wird. In HTTP SOLL es immer dann gesendet werden, wenn die Länge der Nachricht vor der Übertragung bestimmt werden kann, es sei denn, dies ist durch die Regeln in Abschnitt 4.4 verboten.

14.14 Inhalts-Location

Das Entity-Header-Feld Content-Location KANN verwendet werden, um den Ressourcenort für die in der Nachricht eingeschlossene Entität bereitzustellen, wenn diese Entität von einem Ort getrennt von dem URI der angeforderten Ressource zugänglich ist. Ein Server SOLLTE einen Inhaltsspeicherort für die der Antwortentität entsprechende Variante bereitstellen, insbesondere in dem Fall, in dem einer Ressource mehrere Entitäten zugeordnet sind und diese Entitäten tatsächlich separate Speicherorte haben, über die individuell auf sie zugegriffen werden kann, SOLLTE der Server eine Content-Location für die jeweilige Variante, die zurückgegeben wird.

Der Wert von Content-Location definiert auch den Basis-URI für die Entität.

Der Content-Location-Wert ist kein Ersatz für den ursprünglich angeforderten URI, sondern nur eine Angabe des Standorts der Ressource, die dieser bestimmten Entität zum Zeitpunkt der Anforderung entspricht. Zukünftige Anforderungen KÖNNEN den Inhaltsstandort-URI als Anforderungs-URI spezifizieren, wenn der Wunsch besteht, die Quelle dieser bestimmten Entität zu identifizieren.

Ein Cache kann nicht davon ausgehen, dass eine Entität mit einem Inhaltsspeicherort, der sich von dem zum Abrufen verwendeten URI unterscheidet, verwendet werden kann, um auf spätere Anforderungen an diesen Inhaltsspeicherort-URI zu antworten. Der Inhaltsstandort kann jedoch verwendet werden, um zwischen mehreren Entitäten zu unterscheiden, die von einer einzelnen angeforderten Ressource abgerufen werden, wie in Abschnitt 13.6 beschrieben.

Wenn der Content-Location ein relativer URI ist, wird der relative URI relativ zum Request-URI interpretiert.

Die Bedeutung des Content-Location-Headers in PUT- oder POST-Anfragen ist, dass undefinierte Server ihn in diesen Fällen ignorieren können.

14.15 Inhalt-MD5

Das Entity-Header-Feld Content-MD5, wie in RFC 1864 [23] definiert, ist ein MD5-Digest des Entity-Bodys zum Zweck der Bereitstellung einer End-to-End-Nachrichtenintegritätsprüfung (MIC) des Entity-Body. (Hinweis: Ein MIC ist gut geeignet, um versehentliche Änderungen des Entitätskörpers während der Übertragung zu erkennen, ist jedoch nicht gegen böswillige Angriffe geschützt.)

Das Content-MD5-Header-Feld KANN von einem Ursprungsserver oder -Client generiert werden, um als Integritätsprüfung des Entitätskörpers zu dienen. Nur Ursprungsserver oder Clients KÖNNEN die Proxys des Content-MD5-Headerfelds generieren und Gateways DÜRFEN es NICHT generieren, da dies seinen Wert als End-to-End-Integritätsprüfung zunichte machen würde. Jeder Empfänger des Entitätskörpers, einschließlich Gateways und Proxys, KANN überprüfen, ob der Digest-Wert in diesem Header-Feld mit dem des Entitätskörpers wie empfangen übereinstimmt.

Der MD5-Digest wird basierend auf dem Inhalt des Entitätshauptteils berechnet, einschließlich jeglicher angewendeter Inhaltscodierung, jedoch nicht einschließlich jeglicher Übertragungscodierung, die auf den Nachrichtentext angewendet wird. Wenn die Nachricht mit einer Übertragungscodierung empfangen wird, MUSS diese Codierung entfernt werden, bevor der Content-MD5-Wert mit der empfangenen Entität verglichen wird.

Dies hat zur Folge, dass der Digest auf den Oktetts des Entity-Bodys genau so berechnet wird, wie und in der Reihenfolge, in der sie gesendet würden, wenn keine Transfer-Codierung angewendet würde.

HTTP erweitert RFC 1864, um die Berechnung des Digests für zusammengesetzte MIME-Medientypen (z. B. multipart/* und message/rfc822) zuzulassen, aber dies ändert nichts an der Berechnung des Digests, wie im vorherigen Absatz definiert.

Dies hat mehrere Konsequenzen. Der Entity-Body für zusammengesetzte Typen KANN viele Body-Parts enthalten, jeder mit seinen eigenen MIME- und HTTP-Headern (einschließlich Content-MD5-, Content-Transfer-Encoding- und Content-Encoding-Header). Wenn ein Body-Part einen Content-Transfer-Encoding- oder Content-Encoding-Header hat, wird davon ausgegangen, dass der Inhalt des Body-Parts kodiert wurde, und der Body-Part wird unverändert in den Content-MD5-Digest aufgenommen -- dh nach der Anwendung. Das Header-Feld Transfer-Encoding ist in Body-Parts nicht zulässig.

Die Umwandlung aller Zeilenumbrüche in CRLF DARF NICHT vor der Berechnung oder Überprüfung des Digests erfolgen: Die im tatsächlich übertragenen Text verwendete Zeilenumbruchkonvention MUSS bei der Berechnung des Digests unverändert bleiben.

14.16 Inhaltsbereich

Der Entity-Header Content-Range wird mit einem partiellen Entity-Body gesendet, um anzugeben, wo im vollständigen Entity-Body der partielle Body angewendet werden soll. Bereichseinheiten sind in Abschnitt 3.12 definiert.

Der Header SOLLTE die Gesamtlänge des vollständigen Entity-Bodys angeben, es sei denn, diese Länge ist unbekannt oder schwer zu bestimmen. Das Sternchen "*" bedeutet, dass die Instanzlänge zum Zeitpunkt der Antwortgenerierung unbekannt war.

Im Gegensatz zu Byte-Range-Specifier-Werten (siehe Abschnitt 14.35.1) MUSS eine byte-range-resp-spec nur einen Bereich angeben und MUSS absolute Byte-Positionen sowohl für das erste als auch für das letzte Byte des Bereichs enthalten.

Eine Byte-Inhalts-Bereichsspezifikation mit einer Byte-Bereichs- bzw. Spezifikation, deren letzter-Byte-Pos-Wert kleiner als der erste-Byte-Pos-Wert ist oder deren Instanzlängenwert kleiner oder gleich dem letzten ist. Byte-Pos-Wert, ist ungültig. Der Empfänger einer ungültigen Byte-Content-Range-Spezifikation MUSS diese und alle damit übertragenen Inhalte ignorieren.

Ein Server, der eine Antwort mit dem Statuscode 416 (Angeforderter Bereich nicht erfüllbar) sendet, SOLLTE ein Content-Range-Feld mit einer Byte-Bereichs- bzw. Spezifikation von "*" enthalten. Die Instanzlänge gibt die aktuelle Länge von current an

die ausgewählte Ressource. Eine Antwort mit Statuscode 206 (Partial Content) DARF KEIN Content-Range-Feld mit einer Byte-Range- bzw. Spezifikation von "*" enthalten.

Beispiele für Byte-Content-Range-Spec-Werte unter der Annahme, dass die Entität insgesamt 1234 Byte enthält:

Wenn eine HTTP-Nachricht den Inhalt eines einzelnen Bereichs enthält (z. B. eine Antwort auf eine Anfrage nach einem einzelnen Bereich oder auf eine Anfrage nach einer Reihe von Bereichen, die sich ohne Lücken überlappen), wird dieser Inhalt mit einem Content-Range . übertragen -Header und einen Content-Length-Header, der die Anzahl der tatsächlich übertragenen Bytes anzeigt. Beispielsweise,

Wenn eine HTTP-Nachricht den Inhalt mehrerer Bereiche enthält (z. B. eine Antwort auf eine Anfrage nach mehreren nicht überlappenden Bereichen), werden diese als mehrteilige Nachricht übertragen. Der hierfür verwendete Multipart-Medientyp ist "multipart/byteranges" gemäß der Definition in Anhang 19.2. Siehe Anhang 19.6.3 für ein Kompatibilitätsproblem.

Eine Antwort auf eine Anforderung für einen einzelnen Bereich DARF NICHT mit dem Medientyp multipart/byteranges gesendet werden. Eine Antwort auf eine Anforderung für mehrere Bereiche, deren Ergebnis ein einzelner Bereich ist, KANN als Multipart/Byteranges-Medientyp mit einem Teil gesendet werden. Ein Client, der eine Multipart/Byteranges-Nachricht nicht decodieren kann, DARF NICHT nach mehreren Byte-Bereichen in einer einzigen Anforderung fragen.

Wenn ein Client mehrere Bytebereiche in einer Anforderung anfordert, SOLL der Server diese in der Reihenfolge zurückgeben, in der sie in der Anforderung erschienen sind.

Wenn der Server eine Byte-Range-Spezifikation ignoriert, weil sie syntaktisch ungültig ist, SOLLTE der Server die Anfrage so behandeln, als ob das ungültige Range-Header-Feld nicht vorhanden wäre. (Normalerweise bedeutet dies, dass eine 200-Antwort zurückgegeben wird, die die vollständige Entität enthält).

Wenn der Server eine Anforderung empfängt (außer einer, die ein If-Range-Anforderungsheaderfeld enthält) mit einem nicht erfüllbaren Range-Anforderungsheaderfeld (d. h., alle Werte der Byte-Range-Spezifikation haben einen ersten Byte-Pos-Wert größer als die aktuelle Länge der ausgewählten Ressource), SOLLTE es einen Antwortcode von 416 (Angeforderter Bereich nicht erfüllbar) zurückgeben (Abschnitt 10.4.17).

14.17 Inhaltstyp

Das Entity-Header-Feld Content-Type gibt den Medientyp des an den Empfänger gesendeten Entity-Bodys oder im Fall der HEAD-Methode den Medientyp an, der gesendet worden wäre, wenn die Anfrage ein GET gewesen wäre.

Medientypen sind in Abschnitt 3.7 definiert. Ein Beispiel für das Feld ist

Eine weitere Diskussion der Methoden zum Identifizieren des Medientyps einer Entität wird in Abschnitt 7.2.1 gegeben.

14.18 Datum

Das Feld Date general-header stellt das Datum und die Uhrzeit des Ursprungs der Nachricht dar und hat die gleiche Semantik wie das Ursprungsdatum in RFC 822. Der Feldwert ist ein HTTP-Datum, wie in Abschnitt 3.3.1 beschrieben MUSS es gesendet werden im RFC 1123 [8]-Datumsformat.

Ursprungsserver MÜSSEN in allen Antworten ein Datums-Header-Feld enthalten, außer in den folgenden Fällen:

Einer empfangenen Nachricht, die kein Datums-Header-Feld hat, MUSS vom Empfänger eines zugewiesen werden, wenn die Nachricht von diesem Empfänger zwischengespeichert oder über ein Protokoll übertragen wird, das ein Datum erfordert. Eine HTTP-Implementierung ohne Uhr DARF KEINE Antworten zwischenspeichern, ohne sie bei jeder Verwendung erneut zu validieren. Ein HTTP-Cache, insbesondere ein gemeinsam genutzter Cache, SOLLTE einen Mechanismus wie NTP [28] verwenden, um seine Uhr mit einem zuverlässigen externen Standard zu synchronisieren.

Clients SOLLTEN nur ein Date-Header-Feld in Nachrichten senden, die einen Entity-Body enthalten, wie im Fall der PUT- und POST-Anforderungen, und selbst dann ist dies optional. Ein Client ohne Uhr DARF KEIN Datum-Header-Feld in einer Anfrage senden.

Das in einem Date-Header gesendete HTTP-Datum SOLLTE KEIN Datum und eine Uhrzeit nach der Generierung der Nachricht darstellen. Sie SOLLTE die beste verfügbare Näherung des Datums und der Uhrzeit der Nachrichtengenerierung darstellen, es sei denn, die Implementierung hat keine Möglichkeit, ein einigermaßen genaues Datum und eine angemessen genaue Uhrzeit zu generieren. Theoretisch sollte das Datum den Moment kurz vor der Generierung der Entität darstellen. In der Praxis kann das Datum jederzeit während der Nachrichtenerstellung generiert werden, ohne seinen semantischen Wert zu beeinträchtigen.

14.18.1 Uhrloser Origin-Server-Betrieb

Bei einigen Ursprungsserverimplementierungen ist möglicherweise keine Uhr verfügbar. Ein Ursprungsserver ohne Uhr DARF einer Antwort KEINE Expires- oder Last-Modified-Werte zuweisen, es sei denn, diese Werte wurden der Ressource von einem System oder Benutzer mit einer zuverlässigen Uhr zugeordnet. Es KANN einen Expires-Wert zuweisen, von dem bekannt ist, dass er zum oder vor dem Zeitpunkt der Serverkonfiguration in der Vergangenheit liegt (dies ermöglicht das "Vorablaufen" von Antworten, ohne separate Expires-Werte für jede Ressource zu speichern).

14.19 ETag

Das ETag-Response-Header-Feld liefert den aktuellen Wert des Entity-Tags für die angeforderte Variante. Die mit Entity-Tags verwendeten Header werden in den Abschnitten 14.24, 14.26 und 14.44 beschrieben. Das Entity-Tag KANN zum Vergleich mit anderen Entities derselben Ressource verwendet werden (siehe Abschnitt 13.3.3).

14.20 Erwarten

Das Feld Expect request-header wird verwendet, um anzugeben, dass der Client bestimmte Serververhalten benötigt.

HTTP/1.1-Clients und Caches MÜSSEN andere ungültige Datumsformate, insbesondere den Wert "0", wie in der Vergangenheit behandeln (d. h. "bereits abgelaufen").

Um eine Antwort als "bereits abgelaufen" zu markieren, sendet ein Ursprungsserver ein Ablaufdatum, das dem Datumsheaderwert entspricht. (Siehe Regeln für Ablaufberechnungen in Abschnitt 13.2.4.)

Um eine Antwort als "Läuft nie ab" zu kennzeichnen, sendet ein Ursprungsserver ungefähr ein Jahr nach dem Senden der Antwort ein Ablaufdatum. HTTP/1.1-Server sollten keine Ablaufdaten senden, die länger als ein Jahr in der Zukunft liegen.

Das Vorhandensein eines Expires-Header-Felds mit einem Datumswert von einiger Zeit in der Zukunft in einer Antwort, die ansonsten standardmäßig nicht zwischenspeicherbar wäre, zeigt an, dass die Antwort zwischengespeichert werden kann, sofern nicht anders durch ein Cache-Control-Header-Feld angegeben (Abschnitt 14.9) .

14.22 Von

Das Feld From request-header SOLLTE, falls angegeben, eine Internet-E-Mail-Adresse für den menschlichen Benutzer enthalten, der den anfordernden Benutzeragenten steuert. Die Adresse SOLLTE maschinenverwendbar sein, wie durch "Mailbox" in RFC 822 [9], aktualisiert durch RFC 1123 [8], definiert:

Dieses Header-Feld KANN für Protokollierungszwecke und als Mittel zum Identifizieren der Quelle ungültiger oder unerwünschter Anforderungen verwendet werden. Es SOLLTE NICHT als unsichere Form des Zugriffsschutzes verwendet werden. Die Interpretation dieses Feldes ist, dass die Anfrage im Namen der angegebenen Person ausgeführt wird, die die Verantwortung für die durchgeführte Methode übernimmt. Insbesondere sollten Roboteragenten diesen Header einbinden, damit die für den Betrieb des Roboters verantwortliche Person kontaktiert werden kann, wenn Probleme auf der Empfängerseite auftreten.

Die Internet-E-Mail-Adresse in diesem Feld KANN von dem Internet-Host getrennt sein, der die Anfrage gestellt hat. Wenn beispielsweise eine Anfrage über einen Proxy geleitet wird, SOLLTE die Adresse des ursprünglichen Ausstellers verwendet werden.

Der Client SOLLTE das Header-Feld From ohne Zustimmung des Benutzers NICHT senden, da dies mit den Datenschutzinteressen des Benutzers oder den Sicherheitsrichtlinien seiner Site kollidieren könnte. Es wird dringend empfohlen, dass der Benutzer den Wert dieses Felds jederzeit vor einer Anforderung deaktivieren, aktivieren und ändern kann.

14.23 Gastgeber

Das Feld Host request-header gibt den Internet-Host und die Portnummer der angeforderten Ressource an, wie sie aus der ursprünglichen URI des Benutzers oder der verweisenden Ressource (im Allgemeinen eine HTTP-URL,

wie in Abschnitt 3.2.2 beschrieben). Der Wert des Host-Felds MUSS die Benennungsberechtigung des Ursprungsservers oder Gateways darstellen, die durch die ursprüngliche URL angegeben wird. Dadurch kann der Ursprungsserver oder das Gateway zwischen intern mehrdeutigen URLs unterscheiden, z. B. der Root-URL "/" eines Servers für mehrere Hostnamen auf einer einzigen IP-Adresse.

Ein "Host" ohne nachfolgende Portinformationen impliziert den Standardport für den angeforderten Dienst (z. B. "80" für eine HTTP-URL). Zum Beispiel würde eine Anfrage auf dem Ursprungsserver für <http://www.w3.org/pub/WWW/> korrekt enthalten:

Ein Client MUSS ein Host-Header-Feld in alle HTTP/1.1-Anforderungsnachrichten einschließen. Wenn die angeforderte URI keinen Internet-Hostnamen für den angeforderten Dienst enthält, MUSS das Host-Header-Feld mit einem leeren Wert angegeben werden. Ein HTTP/1.1-Proxy MUSS sicherstellen, dass jede von ihm weitergeleitete Anforderungsnachricht ein entsprechendes Host-Header-Feld enthält, das den vom Proxy angeforderten Dienst identifiziert. Alle internetbasierten HTTP/1.1-Server MÜSSEN mit einem 400-Statuscode (Bad Request) auf jede HTTP/1.1-Request-Nachricht ohne Host-Header-Feld antworten.

Siehe Abschnitte 5.2 und 19.6.1.1 für weitere Anforderungen in Bezug auf den Host.

14.24 Wenn-Match

Das Feld If-Match-Anforderungsheader wird mit einer Methode verwendet, um es bedingt zu machen. Ein Client, der über eine oder mehrere Entitäten verfügt, die zuvor von der Ressource abgerufen wurden, kann überprüfen, ob eine dieser Entitäten aktuell ist, indem er eine Liste ihrer zugeordneten Entitäts-Tags in das If-Match-Header-Feld einfügt. Entity-Tags sind in Abschnitt 3.11 definiert. Der Zweck dieser Funktion besteht darin, effiziente Aktualisierungen zwischengespeicherter Informationen mit einem minimalen Transaktions-Overhead zu ermöglichen. Es wird auch bei Aktualisierungsanforderungen verwendet, um eine versehentliche Änderung der falschen Version einer Ressource zu verhindern. Als Sonderfall entspricht der Wert "*" jeder aktuellen Entität der Ressource.

Wenn eines der Entity-Tags mit dem Entity-Tag der Entität übereinstimmt, die in der Antwort auf eine ähnliche GET-Anfrage (ohne den If-Match-Header) für diese Ressource zurückgegeben worden wäre, oder wenn "*" angegeben ist

und irgendeine aktuelle Entität für diese Ressource existiert, dann KANN der Server die angeforderte Methode ausführen, als ob das If-Match-Header-Feld nicht existierte.

A server MUST use the strong comparison function (see section 13.3.3) to compare the entity tags in If-Match.

If none of the entity tags match, or if "*" is given and no current entity exists, the server MUST NOT perform the requested method, and MUST return a 412 (Precondition Failed) response. This behavior is most useful when the client wants to prevent an updating method, such as PUT, from modifying a resource that has changed since the client last retrieved it.

If the request would, without the If-Match header field, result in anything other than a 2xx or 412 status, then the If-Match header MUST be ignored.

The meaning of "If-Match: *" is that the method SHOULD be performed if the representation selected by the origin server (or by a cache, possibly using the Vary mechanism, see section 14.44) exists, and MUST NOT be performed if the representation does not exist.

A request intended to update a resource (e.g., a PUT) MAY include an If-Match header field to signal that the request method MUST NOT be applied if the entity corresponding to the If-Match value (a single entity tag) is no longer a representation of that resource. This allows the user to indicate that they do not wish the request to be successful if the resource has been changed without their knowledge. Beispiele:

The result of a request having both an If-Match header field and either an If-None-Match or an If-Modified-Since header fields is undefined by this specification.

14.25 If-Modified-Since

The If-Modified-Since request-header field is used with a method to make it conditional: if the requested variant has not been modified since the time specified in this field, an entity will not be returned from the server instead, a 304 (not modified) response will be returned without any message-body.

An example of the field is:

A GET method with an If-Modified-Since header and no Range header requests that the identified entity be transferred only if it has been modified since the date given by the If-Modified-Since header. The algorithm for determining this includes the following cases:

The purpose of this feature is to allow efficient updates of cached information with a minimum amount of transaction overhead.

The result of a request having both an If-Modified-Since header field and either an If-Match or an If-Unmodified-Since header fields is undefined by this specification.

14.26 If-None-Match

The If-None-Match request-header field is used with a method to make it conditional. A client that has one or more entities previously obtained from the resource can verify that none of those entities is current by including a list of their associated entity tags in the If-None-Match header field. The purpose of this feature is to allow efficient updates of cached information with a minimum amount of transaction overhead. It is also used to prevent a method (e.g. PUT) from inadvertently modifying an existing resource when the client believes that the resource does not exist.

As a special case, the value "*" matches any current entity of the resource.

If any of the entity tags match the entity tag of the entity that would have been returned in the response to a similar GET request (without the If-None-Match header) on that resource, or if "*" is given and any current entity exists for that resource, then the server MUST NOT perform the requested method, unless required to do so because the resource's modification date fails to match that supplied in an If-Modified-Since header field in the request. Instead, if the request method was GET or HEAD, the server SHOULD respond with a 304 (Not Modified) response, including the cache- related header fields (particularly ETag) of one of the entities that matched. For all other request methods, the server MUST respond with a status of 412 (Precondition Failed).

See section 13.3.3 for rules on how to determine if two entities tags match. The weak comparison function can only be used with GET or HEAD requests.

If none of the entity tags match, then the server MAY perform the requested method as if the If-None-Match header field did not exist, but MUST also ignore any If-Modified-Since header field(s) in the request. That is, if no entity tags match, then the server MUST NOT return a 304 (Not Modified) response.

If the request would, without the If-None-Match header field, result in anything other than a 2xx or 304 status, then the If-None-Match header MUST be ignored. (See section 13.3.4 for a discussion of server behavior when both If-Modified-Since and If-None-Match appear in the same request.)

The meaning of "If-None-Match: *" is that the method MUST NOT be performed if the representation selected by the origin server (or by a cache, possibly using the Vary mechanism, see section 14.44) exists, and SHOULD be performed if the representation does not exist. This feature is intended to be useful in preventing races between PUT operations.

The result of a request having both an If-None-Match header field and either an If-Match or an If-Unmodified-Since header fields is undefined by this specification.

14.27 If-Range

If a client has a partial copy of an entity in its cache, and wishes to have an up-to-date copy of the entire entity in its cache, it could use the Range request-header with a conditional GET (using either or both of If-Unmodified-Since and If-Match.) However, if the condition fails because the entity has been modified, the client would then have to make a second request to obtain the entire current entity-body.

The If-Range header allows a client to "short-circuit" the second request. Informally, its meaning is `if the entity is unchanged, send me the part(s) that I am missing otherwise, send me the entire new entity'.

If the client has no entity tag for an entity, but does have a Last- Modified date, it MAY use that date in an If-Range header. (The server can distinguish between a valid HTTP-date and any form of entity-tag by examining no more than two characters.) The If-Range header SHOULD only be used together with a Range header, and MUST be ignored if the request does not include a Range header, or if the server does not support the sub-range operation.

If the entity tag given in the If-Range header matches the current entity tag for the entity, then the server SHOULD provide the specified sub-range of the entity using a 206 (Partial content) response. If the entity tag does not match, then the server SHOULD return the entire entity using a 200 (OK) response.

14.28 If-Unmodified-Since

The If-Unmodified-Since request-header field is used with a method to make it conditional. If the requested resource has not been modified since the time specified in this field, the server SHOULD perform the requested operation as if the If-Unmodified-Since header were not present.

If the requested variant has been modified since the specified time, the server MUST NOT perform the requested operation, and MUST return a 412 (Precondition Failed).

An example of the field is:

If the request normally (i.e., without the If-Unmodified-Since header) would result in anything other than a 2xx or 412 status, the If-Unmodified-Since header SHOULD be ignored.

If the specified date is invalid, the header is ignored.

The result of a request having both an If-Unmodified-Since header field and either an If-None-Match or an If-Modified-Since header fields is undefined by this specification.

14.29 Last-Modified

The Last-Modified entity-header field indicates the date and time at which the origin server believes the variant was last modified.

The exact meaning of this header field depends on the implementation of the origin server and the nature of the original resource. For files, it may be just the file system last-modified time. For entities with dynamically included parts, it may be the most recent of the set of last-modify times for its component parts. For database gateways, it may be the last-update time stamp of the record. For virtual objects, it may be the last time the internal state changed.

An origin server MUST NOT send a Last-Modified date which is later than the server's time of message origination. In such cases, where the resource's last modification would indicate some time in the future, the server MUST replace that date with the message origination date.

An origin server SHOULD obtain the Last-Modified value of the entity as close as possible to the time that it generates the Date value of its response. This allows a recipient to make an accurate assessment of the entity's modification time, especially if the entity changes near the time that the response is generated.

HTTP/1.1 servers SHOULD send Last-Modified whenever feasible.

14.30 Location

The Location response-header field is used to redirect the recipient to a location other than the Request-URI for completion of the request or identification of a new resource. For 201 (Created) responses, the Location is that of the new resource which was created by the request. For 3xx responses, the location SHOULD indicate the server's preferred URI for automatic redirection to the resource. The field value consists of a single absolute URI.

14.31 Max-Forwards

The Max-Forwards request-header field provides a mechanism with the TRACE (section 9.8) and OPTIONS (section 9.2) methods to limit the number of proxies or gateways that can forward the request to the next inbound server. This can be useful when the client is attempting to trace a request chain which appears to be failing or looping in mid-chain.

The Max-Forwards value is a decimal integer indicating the remaining number of times this request message may be forwarded.

Each proxy or gateway recipient of a TRACE or OPTIONS request containing a Max-Forwards header field MUST check and update its value prior to forwarding the request. If the received value is zero (0), the recipient MUST NOT forward the request instead, it MUST respond as the final recipient. If the received Max-Forwards value is greater than zero, then the forwarded message MUST contain an updated Max-Forwards field with a value decremented by one (1).

The Max-Forwards header field MAY be ignored for all other methods defined by this specification and for any extension methods for which it is not explicitly referred to as part of that method definition.

14.32 Pragma

The Pragma general-header field is used to include implementation- specific directives that might apply to any recipient along the request/response chain. All pragma directives specify optional behavior from the viewpoint of the protocol however, some systems MAY require that behavior be consistent with the directives.

14.33 Proxy-Authenticate

The Proxy-Authenticate response-header field MUST be included as part of a 407 (Proxy Authentication Required) response. The field value consists of a challenge that indicates the authentication scheme and parameters applicable to the proxy for this Request-URI.

The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" [43]. Unlike WWW-Authenticate, the Proxy-Authenticate header field applies only to the current connection and SHOULD NOT be passed on to downstream clients. However, an intermediate proxy might need to obtain its own credentials by requesting them from the downstream client, which in some circumstances will appear as if the proxy is forwarding the Proxy-Authenticate header field.

14.34 Proxy-Authorization

The Proxy-Authorization request-header field allows the client to identify itself (or its user) to a proxy which requires authentication. The Proxy-Authorization field value consists of credentials containing the authentication information of the user agent for the proxy and/or realm of the resource being requested.

The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" [43] . Unlike Authorization, the Proxy-Authorization header field applies only to the next outbound proxy that demanded authentication using the Proxy- Authenticate field. When multiple proxies are used in a chain, the

Proxy-Authorization header field is consumed by the first outbound proxy that was expecting to receive credentials. A proxy MAY relay the credentials from the client request to the next proxy if that is the mechanism by which the proxies cooperatively authenticate a given request.

14.35 Range

14.35.1 Byte Ranges

Since all HTTP entities are represented in HTTP messages as sequences of bytes, the concept of a byte range is meaningful for any HTTP entity. (However, not all clients and servers need to support byte- range operations.)

Byte range specifications in HTTP apply to the sequence of bytes in the entity-body (not necessarily the same as the message-body).

A byte range operation MAY specify a single range of bytes, or a set of ranges within a single entity.

The first-byte-pos value in a byte-range-spec gives the byte-offset of the first byte in a range. The last-byte-pos value gives the byte-offset of the last byte in the range that is, the byte positions specified are inclusive. Byte offsets start at zero.

If the last-byte-pos value is present, it MUST be greater than or equal to the first-byte-pos in that byte-range-spec, or the byte- range-spec is syntactically invalid. The recipient of a byte-range- set that includes one or more syntactically invalid byte-range-spec values MUST ignore the header field that includes that byte-range- set.

If the last-byte-pos value is absent, or if the value is greater than or equal to the current length of the entity-body, last-byte-pos is taken to be equal to one less than the current length of the entity- body in bytes.

By its choice of last-byte-pos, a client can limit the number of bytes retrieved without knowing the size of the entity.

A suffix-byte-range-spec is used to specify the suffix of the entity-body, of a length given by the suffix-length value. (That is, this form specifies the last N bytes of an entity-body.) If the entity is shorter than the specified suffix-length, the entire entity-body is used.

If a syntactically valid byte-range-set includes at least one byte- range-spec whose first-byte-pos is less than the current length of the entity-body, or at least one suffix-byte-range-spec with a non- zero suffix-length, then the byte-range-set is satisfiable. Otherwise, the byte-range-set is unsatisfiable. If the byte-range-set is unsatisfiable, the server SHOULD return a response with a status of 416 (Requested range not satisfiable). Otherwise, the server SHOULD return a response with a status of 206 (Partial Content) containing the satisfiable ranges of the entity-body.

Examples of byte-ranges-specifier values (assuming an entity-body of length 10000):

14.35.2 Range Retrieval Requests

HTTP retrieval requests using conditional or unconditional GET methods MAY request one or more sub-ranges of the entity, instead of the entire entity, using the Range request header, which applies to the entity returned as the result of the request:

A server MAY ignore the Range header. However, HTTP/1.1 origin servers and intermediate caches ought to support byte ranges when possible, since Range supports efficient recovery from partially failed transfers, and supports efficient partial retrieval of large entities.

If the server supports the Range header and the specified range or ranges are appropriate for the entity:

In some cases, it might be more appropriate to use the If-Range header (see section 14.27) in addition to the Range header.

If a proxy that supports ranges receives a Range request, forwards the request to an inbound server, and receives an entire entity in reply, it SHOULD only return the requested range to its client. It SHOULD store the entire received response in its cache if that is consistent with its cache allocation policies.

14.36 Referer

The Referer[sic] request-header field allows the client to specify, for the server's benefit, the address (URI) of the resource from which the Request-URI was obtained (the "referrer", although the header field is misspelled.) The Referer request-header allows a server to generate lists of back-links to resources for interest, logging, optimized caching, etc. It also allows obsolete or mistyped links to be traced for maintenance. The Referer field MUST NOT be sent if the Request-URI was obtained from a source that does not have its own URI, such as input from the user keyboard.

If the field value is a relative URI, it SHOULD be interpreted relative to the Request-URI. The URI MUST NOT include a fragment. See section 15.1.3 for security considerations.

14.37 Retry-After

The Retry-After response-header field can be used with a 503 (Service Unavailable) response to indicate how long the service is expected to be unavailable to the requesting client. This field MAY also be used with any 3xx (Redirection) response to indicate the minimum time the user-agent is asked wait before issuing the redirected request. The value of this field can be either an HTTP-date or an integer number of seconds (in decimal) after the time of the response.

Two examples of its use are

In the latter example, the delay is 2 minutes.

14.38 Server

The Server response-header field contains information about the software used by the origin server to handle the request. The field can contain multiple product tokens (section 3.8) and comments identifying the server and any significant subproducts. The product tokens are listed in order of their significance for identifying the application.

If the response is being forwarded through a proxy, the proxy application MUST NOT modify the Server response-header. Instead, it SHOULD include a Via field (as described in section 14.45).

14.39 TE

The TE request-header field indicates what extension transfer-codings it is willing to accept in the response and whether or not it is willing to accept trailer fields in a chunked transfer-coding. Its value may consist of the keyword "trailers" and/or a comma-separated list of extension transfer-coding names with optional accept parameters (as described in section 3.6).

The presence of the keyword "trailers" indicates that the client is willing to accept trailer fields in a chunked transfer-coding, as defined in section 3.6.1. This keyword is reserved for use with transfer-coding values even though it does not itself represent a transfer-coding.

The TE header field only applies to the immediate connection. Therefore, the keyword MUST be supplied within a Connection header field (section 14.10) whenever TE is present in an HTTP/1.1 message.

A server tests whether a transfer-coding is acceptable, according to a TE field, using these rules:

If the TE field-value is empty or if no TE field is present, the only transfer-coding is "chunked". A message with no transfer-coding is always acceptable.

14.40 Trailer

The Trailer general field value indicates that the given set of header fields is present in the trailer of a message encoded with chunked transfer-coding.

An HTTP/1.1 message SHOULD include a Trailer header field in a message using chunked transfer-coding with a non-empty trailer. Doing so allows the recipient to know which header fields to expect in the trailer.

If no Trailer header field is present, the trailer SHOULD NOT include any header fields. See section 3.6.1 for restrictions on the use of trailer fields in a "chunked" transfer-coding.

Message header fields listed in the Trailer header field MUST NOT include the following header fields:

14.41 Transfer-Encoding

The Transfer-Encoding general-header field indicates what (if any) type of transformation has been applied to the message body in order to safely transfer it between the sender and the recipient. This differs from the content-coding in that the transfer-coding is a property of the message, not of the entity.

Transfer-codings are defined in section 3.6. An example is:

If multiple encodings have been applied to an entity, the transfer- codings MUST be listed in the order in which they were applied. Additional information about the encoding parameters MAY be provided by other entity-header fields not defined by this specification.

Many older HTTP/1.0 applications do not understand the Transfer- Encoding header.

14.42 Upgrade

The Upgrade general-header allows the client to specify what additional communication protocols it supports and would like to use if the server finds it appropriate to switch protocols. The server MUST use the Upgrade header field within a 101 (Switching Protocols) response to indicate which protocol(s) are being switched.

The Upgrade header field is intended to provide a simple mechanism for transition from HTTP/1.1 to some other, incompatible protocol. It does so by allowing the client to advertise its desire to use another protocol, such as a later version of HTTP with a higher major version number, even though the current request has been made using HTTP/1.1. This eases the difficult transition between incompatible protocols by allowing the client to initiate a request in the more commonly supported protocol while indicating to the server that it would like to use a "better" protocol if available (where "better" is determined by the server, possibly according to the nature of the method and/or resource being requested).

The Upgrade header field only applies to switching application-layer protocols upon the existing transport-layer connection. Upgrade cannot be used to insist on a protocol change its acceptance and use by the server is optional. The capabilities and nature of the application-layer communication after the protocol change is entirely dependent upon the new protocol chosen, although the first action after changing the protocol MUST be a response to the initial HTTP request containing the Upgrade header field.

The Upgrade header field only applies to the immediate connection. Therefore, the upgrade keyword MUST be supplied within a Connection header field (section 14.10) whenever Upgrade is present in an HTTP/1.1 message.

The Upgrade header field cannot be used to indicate a switch to a protocol on a different connection. For that purpose, it is more appropriate to use a 301, 302, 303, or 305 redirection response.

This specification only defines the protocol name "HTTP" for use by the family of Hypertext Transfer Protocols, as defined by the HTTP version rules of section 3.1 and future updates to this specification. Any token can be used as a protocol name however, it will only be useful if both the client and server associate the name with the same protocol.

14.43 User-Agent

The User-Agent request-header field contains information about the user agent originating the request. This is for statistical purposes, the tracing of protocol violations, and automated recognition of user agents for the sake of tailoring responses to avoid particular user agent limitations. User agents SHOULD include this field with requests. The field can contain multiple product tokens (section 3.8) and comments identifying the agent and any subproducts which form a significant part of the user agent. By convention, the product tokens are listed in order of their significance for identifying the application.

14.44 Vary

The Vary field value indicates the set of request-header fields that fully determines, while the response is fresh, whether a cache is permitted to use the response to reply to a subsequent request without revalidation. For uncacheable or stale responses, the Vary field value advises the user agent about the criteria that were used to select the representation. A Vary field value of "*" implies that a cache cannot determine from the request headers of a subsequent request whether this response is the appropriate representation. See section 13.6 for use of the Vary header field by caches.

An HTTP/1.1 server SHOULD include a Vary header field with any cacheable response that is subject to server-driven negotiation. Doing so allows a cache to properly interpret future requests on that resource and informs the user agent about the presence of negotiation

on that resource. A server MAY include a Vary header field with a non-cacheable response that is subject to server-driven negotiation, since this might provide the user agent with useful information about the dimensions over which the response varies at the time of the response.

A Vary field value consisting of a list of field-names signals that the representation selected for the response is based on a selection algorithm which considers ONLY the listed request-header field values in selecting the most appropriate representation. A cache MAY assume that the same selection will be made for future requests with the same values for the listed field names, for the duration of time for which the response is fresh.

The field-names given are not limited to the set of standard request-header fields defined by this specification. Field names are case-insensitive.

A Vary field value of "*" signals that unspecified parameters not limited to the request-headers (e.g., the network address of the client), play a role in the selection of the response representation. The "*" value MUST NOT be generated by a proxy server it may only be generated by an origin server.

14.45 Via

The Via general-header field MUST be used by gateways and proxies to indicate the intermediate protocols and recipients between the user agent and the server on requests, and between the origin server and the client on responses. It is analogous to the "Received" field of RFC 822 [9] and is intended to be used for tracking message forwards, avoiding request loops, and identifying the protocol capabilities of all senders along the request/response chain.

The received-protocol indicates the protocol version of the message received by the server or client along each segment of the request/response chain. The received-protocol version is appended to the Via field value when the message is forwarded so that information about the protocol capabilities of upstream applications remains visible to all recipients.

The protocol-name is optional if and only if it would be "HTTP". The received-by field is normally the host and optional port number of a recipient server or client that subsequently forwarded the message. However, if the real host is considered to be sensitive information, it MAY be replaced by a pseudonym. If the port is not given, it MAY be assumed to be the default port of the received-protocol.

Multiple Via field values represents each proxy or gateway that has forwarded the message. Each recipient MUST append its information such that the end result is ordered according to the sequence of forwarding applications.

Comments MAY be used in the Via header field to identify the software of the recipient proxy or gateway, analogous to the User-Agent and Server header fields. However, all comments in the Via field are optional and MAY be removed by any recipient prior to forwarding the message.

For example, a request message could be sent from an HTTP/1.0 user agent to an internal proxy code-named "fred", which uses HTTP/1.1 to forward the request to a public proxy at nowhere.com, which completes the request by forwarding it to the origin server at www.ics.uci.edu. The request received by www.ics.uci.edu would then have the following Via header field:

Proxies and gateways used as a portal through a network firewall SHOULD NOT, by default, forward the names and ports of hosts within the firewall region. This information SHOULD only be propagated if explicitly enabled. If not enabled, the received-by host of any host behind the firewall SHOULD be replaced by an appropriate pseudonym for that host.

For organizations that have strong privacy requirements for hiding internal structures, a proxy MAY combine an ordered subsequence of Via header field entries with identical received-protocol values into a single such entry. Beispielsweise,

Applications SHOULD NOT combine multiple entries unless they are all under the same organizational control and the hosts have already been replaced by pseudonyms. Applications MUST NOT combine entries which have different received-protocol values.

14.46 Warning

The Warning general-header field is used to carry additional information about the status or transformation of a message which might not be reflected in the message. This information is typically used to warn about a possible lack of semantic transparency from caching operations or transformations applied to the entity body of the message.

Warning headers are sent with responses using:

A response MAY carry more than one Warning header.

The warn-text SHOULD be in a natural language and character set that is most likely to be intelligible to the human user receiving the response. This decision MAY be based on any available knowledge, such as the location of the cache or user, the Accept-Language field in a request, the Content-Language field in a response, etc. The default language is English and the default character set is ISO-8859-1.

If a character set other than ISO-8859-1 is used, it MUST be encoded in the warn-text using the method described in RFC 2047 [14].

Warning headers can in general be applied to any message, however some specific warn-codes are specific to caches and can only be applied to response messages. New Warning headers SHOULD be added after any existing Warning headers. A cache MUST NOT delete any Warning header that it received with a message. However, if a cache successfully validates a cache entry, it SHOULD remove any Warning headers previously attached to that entry except as specified for

specific Warning codes. It MUST then add any Warning headers received in the validating response. In other words, Warning headers are those that would be attached to the most recent relevant response.

When multiple Warning headers are attached to a response, the user agent ought to inform the user of as many of them as possible, in the order that they appear in the response. If it is not possible to inform the user of all of the warnings, the user agent SHOULD follow these heuristics:

Systems that generate multiple Warning headers SHOULD order them with this user agent behavior in mind.

Requirements for the behavior of caches with respect to Warnings are stated in section 13.1.2.

This is a list of the currently-defined warn-codes, each with a recommended warn-text in English, and a description of its meaning.

110 Response is stale MUST be included whenever the returned response is stale.

111 Revalidation failed MUST be included if a cache returns a stale response because an attempt to revalidate the response failed, due to an inability to reach the server.

112 Disconnected operation SHOULD be included if the cache is intentionally disconnected from the rest of the network for a period of time.

113 Heuristic expiration MUST be included if the cache heuristically chose a freshness lifetime greater than 24 hours and the response's age is greater than 24 hours.

199 Miscellaneous warning The warning text MAY include arbitrary information to be presented to a human user, or logged. A system receiving this warning MUST NOT take any automated action, besides presenting the warning to the user.

214 Transformation applied MUST be added by an intermediate cache or proxy if it applies any transformation changing the content-coding (as specified in the Content-Encoding header) or media-type (as specified in the Content-Type header) of the response, or the entity-body of the response, unless this Warning code already appears in the response.

299 Miscellaneous persistent warning The warning text MAY include arbitrary information to be presented to a human user, or logged. A system receiving this warning MUST NOT take any automated action.

If an implementation sends a message with one or more Warning headers whose version is HTTP/1.0 or lower, then the sender MUST include in each warning-value a warn-date that matches the date in the response.

If an implementation receives a message with a warning-value that includes a warn-date, and that warn-date is different from the Date value in the response, then that warning-value MUST be deleted from the message before storing, forwarding, or using it. (This prevents bad consequences of naive caching of Warning header fields.) If all of the warning-values are deleted for this reason, the Warning header MUST be deleted as well.

14.47 WWW-Authenticate

The WWW-Authenticate response-header field MUST be included in 401 (Unauthorized) response messages. The field value consists of at least one challenge that indicates the authentication scheme(s) and parameters applicable to the Request-URI.

The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" [43]. User agents are advised to take special care in parsing the WWW- Authenticate field value as it might contain more than one challenge, or if more than one WWW-Authenticate header field is provided, the contents of a challenge itself can contain a comma-separated list of authentication parameters.


Making Sense of Attribute Gage R&R Calculations

Measurement error is unavoidable. There will always be some measurement variation that is due to the measurement system itself.

Most problematic measurement system issues come from measuring attribute data in terms that rely on human judgment such as good/bad, pass/fail, etc. This is because it is very difficult for all testers to apply the same operational definition of what is “good” and what is “bad.”

However, such measurement systems are seen throughout industries. One example is quality control inspectors using a high-powered microscope to determine whether a pair of contact lens is defect free. Hence, it is important to quantify how well such measurement systems are working.

The tool used for this kind of analysis is called attribute gage R&R. The R&R stands for repeatability and reproducibility. Repeatability means that the same operator, measuring the same thing, using the same gage, should get the same reading every time. Reproducibility means that different operators, measuring the same thing, using the same gage, should get the same reading every time.

Attribute gage R&R reveals two important findings – percentage of repeatability and percentage of reproducibility. Ideally, both percentages should be 100 percent, but generally, the rule of thumb is anything above 90 percent is quite adequate.

Obtaining these percentages can be done using simple mathematics, and there is really no need for sophisticated software. Nevertheless, Minitab has a module called Attribute Agreement Analysis (in Minitab 13, it was called Attribute Gage R&R) that does the same and much more, and this makes analysts’ lives easier.

Having said that, it is important for analysts to understand what the statistical software is doing to make good sense of the report. In this article, the steps are reproduced using spreadsheet software with a case study as an example.

Steps to Calculate Gage R&R

Schritt 1: Select between 20 to 30 test samples that represent the full range of variation encountered in actual production runs. Practically speaking, if “clearly good” parts and “clearly bad” parts are chosen, the ability of the measurement system to accurately categorize the ones in between will not be tested. For maximum confidence, a 50-50 mix of good/bad parts is recommended. A 30:70 ratio is acceptable.

Step 2: Have a master appraiser categorize each test sample into its true attribute category.

Figure 1: Master Appraiser Categorizations

Schritt 3: Select two to three inspectors and have them categorize each test sample without knowing what the master appraiser has rated them.

Schritt 4: Place the test samples in a new random order and have the inspectors repeat their assessments.

Schritt 5: For each inspector, count the number of times his or her two readings agree. Divide this number with the total inspected to obtain the percentage of agreement. This is the individual repeatability of that inspector (Minitab calls this “Within Appraiser”).

To obtain the overall repeatability, obtain the average of all individual repeatability percentages for all inspectors. In this case study, the overall repeatability is 95.56 percent, which means if the measurements are repeated on the same set of items, there is a 95.56 percent chance of getting the same results, which is not bad but not perfect.

Figure 3: Individual Repeatability

In this case, the individual repeatability of Operator 1 is only 90 percent. This means that Operator 1 is only consistent with himself 90 percent of the time. He needs retraining.

Schritt 6: Compute the number of times each inspector’s two assessments agree with each other and also the standard produced by the master appraiser in Step 2.

Figure 4: Individual Effectiveness

This percentage is called the individual effectiveness (Minitab calls this “Each Appraiser vs. Standard”). In this case, Operator 1 is in agreement with the standard only 80 percent of the time. He needs retraining.

Step 7: Compute the percentage of times all the inspectors’ assessments agree for the first and second measurement for each sample item.

Figure 5: Reproducibility of the Measurement System

This percentage is the reproducibility of the measurement system (Minitab calls this “Between Appraiser”). All three inspectors agree with each other only 83.3 percent of the time. They may not be all using exactly the same operational definition for pass/fail all the time or may have a very slight difference in interpretation of what constitutes a pass and a failure.

Step 8: Compute the percentage of the time all the inspectors’ assessments agree with each other and with the standard.

Figure 6: Overall Effectiveness of the Measurement System

This percentage gives the overall effectiveness of the measurement system (Minitab calls this “All Appraiser vs. Standard”). It is the percent of time all inspectors agree and their agreement matches with the standard.

Minitab produces a lot more statistics in the output of the attribute agreement analysis, but for most cases and use, the analysis outlined in this article should suffice.

So What If the Gage R&R Is Not Good?

The key in all measurement systems is having a clear test method and clear criteria for what to accept and what to reject. Die Schritte sind wie folgt:


Retrieving the date

It is simple to make PowerShell display the current date. To do so, just enter the Get-Date cmdlet. If you need to display the date in a certain way, then PowerShell offers a number of different options for doing so. The simplest method is to use a display hint. The DisplayHint parameter can be set to Date, Time, or DateTime. The image below shows how the basic Get-Date cmdlet works, and a few examples of using the DisplayHint parameter.

If you need a bit more control over the output, you can use the Format parameter or the UFormat parameter. The Format parameter is mostly used when you need to put the date into a certain format for the purpose of making a comparison. We won’t be using the Format parameter in this article, but it is still a good idea to be aware of its existence.

The UFormat parameter is used more for display purposes. It allows you to arrange the various elements that make up the date and time in a way of your choosing. All you have to do is to append various formatting characters to the UFormat parameter. The parameters that you can use include:

%M — Month (as a number)
%D — Date
%Y — Year
%A — The day of the week
%Z — The time zone, expressed as an offset from UTC or Zulu time. For example, -5 is Eastern Time in the United States.

You can see an example below of how the UFormat parameter works.


There are two things that are worth paying attention to in the image above. First, you will notice that everything following the UFormat parameter is enclosed in quotation marks. This is because I am not just specifying formatting characters, I can also use text. In the figure, I used a mixture of text and formatting characters.

The other thing to notice is that even though I live on the East Coast of the United States, which normally has a time zone offset of -5, the output in the figure above shows the offset as -4. This is because it is daylight saving time. But wouldn’t it be nice to be able to verify that? We can actually. Here is how it’s done:

As you can see in the image below, PowerShell shows a value of True, indicating that it is indeed daylight savings time.


DateTime Data Type

The dateTime data type is used to specify a date and a time.

The dateTime is specified in the following form "YYYY-MM-DDThh:mm:ss" where:

  • YYYY indicates the year
  • MM indicates the month
  • DD indicates the day
  • T indicates the start of the required time section
  • hh indicates the hour
  • mm indicates the minute
  • ss indicates the second

Hinweis: All components are required!

The following is an example of a dateTime declaration in a schema:

An element in your document might look like this:

Or it might look like this:

Zeitzonen

To specify a time zone, you can either enter a dateTime in UTC time by adding a "Z" behind the time - like this:

or you can specify an offset from the UTC time by adding a positive or negative time behind the time - like this:


Betreiber

Adds a specified time interval to a DateTimeOffset object that has a specified date and time, and yields a DateTimeOffset object that has new a date and time.

Determines whether two specified DateTimeOffset objects represent the same point in time.

Determines whether one specified DateTimeOffset object is greater than (or later than) a second specified DateTimeOffset object.

Determines whether one specified DateTimeOffset object is greater than or equal to a second specified DateTimeOffset object.

Defines an implicit conversion of a DateTime object to a DateTimeOffset object.

Determines whether two specified DateTimeOffset objects refer to different points in time.

Determines whether one specified DateTimeOffset object is less than a second specified DateTimeOffset object.

Determines whether one specified DateTimeOffset object is less than a second specified DateTimeOffset object.

Subtracts one DateTimeOffset object from another and yields a time interval.

Subtracts a specified time interval from a specified date and time, and yields a new date and time.


Schau das Video: Logické funkce, hradla (Oktober 2021).