2009-08-24 6 views
0

Ich fragte mich also, was mit HTTP Content Negotiation in Bezug auf Anfragen, wo die zurückgegebenen Daten möglicherweise mehrere gültige MIME-Typen haben, getan werden sollte. wennCanonical vs Requested Type in Inhaltsverhandlung

Zum Beispiel sagen, ich habe ein beliebigen Daten, die den folgenden möglichen MIME-Typen hat:

text/data,application/x-data,application/data+xml 

Da es mehrere MIME-Typen möglich eine Client-Anwendung Daten dieser Form von meiner Web-Anwendung anfordert sollte vernünftigerweise erwarten, dass diese Art von Daten empfangen wird, unabhängig davon, welche der MIME-Typen sie in ihren Anforderungen verwenden. Header akzeptieren. ABER es wird im Allgemeinen einen Konsens darüber geben, welcher Typ der kanonische Typ für diese Daten ist (dh einer wird ein ordnungsgemäß registrierter MIME-Typ mit der IETF sein, während die anderen Vorregistrierungs- oder Vorstandardisierungstypen sind).

Also meine Frage ist, sollte ich bei der Beantwortung dieser Anfragen meine zurückgegebene Content-Type-Header als der kanonische Typ oder der angeforderte Typ festgelegt werden? Was ist besser?

Sollte ich immer den kanonischen Typ zurückgeben oder sollte ich den angeforderten Typ zurückgeben, um Kompatibilität mit älteren/schlecht geschriebenen Anwendungen zu gewährleisten, die nicht aktualisiert wurden? Derzeit gebe ich den kanonischen Typ zurück, da dies ein besserer Ansatz zu sein scheint und was die meisten Leute mit den Datentypen machen, mit denen ich arbeite.

Dies ist etwas subjektiv, so dass sie, wenn Sie denken, es sollte Community Wiki statt einer Frage lassen Sie mich wissen und ich werde in Erwägung ziehen, es

Antwort

0

Wenn ein User-Agent (Client-Anwendung) eine Ressource anfordert wird mehrere verschiedene Mime-Typen für diese einzelne angeforderte Ressource beaconieren. Dies geschieht aus Kompatibilitätsgründen, um dem Webserver mitzuteilen, was der Benutzer-Agent akzeptieren kann. Es ist die Aufgabe des Servers zu bestimmen, was der Mime-Typ der Ressource tatsächlich ist.

Es tut nicht weh, einige Entscheidungen auf der Serverseite zu treffen, um die passende Antwort zu finden. Wenn Sie beispielsweise alle HTML-Seiten als XML bereitstellen möchten, aber ein wichtiger Benutzeragent den erforderlichen MIME-Typ nicht unterstützt, können Sie eine dynamische Antwort mithilfe einer Hilfstechnologie wie PHP oder ASP bereitstellen. Im Falle dieses Beispiels wäre die beste Idee, den richtigen Mime-Typ als den kanonischen zu setzen, und wenn der Benutzer-Agent das kanonische nicht unterstützt, dann diene ihnen etwas anderes, das sie unterstützen, sonst erhält jeder das kanonische.

+0

In meinem Fall sind die MIME-Typen alle gültigen Typen für das gleiche Datenformat (die zurückgegebenen Daten sind unabhängig vom Typ identisch). Es ist also kein Problem, eine passende Antwort zu generieren, sondern welchen MIME-Typ ich zurückgeben soll Content-Type-Header – RobV

+0

In diesem Fall wählen Sie dann die, von der Sie glauben, dass sie am weitesten unterstützt wird und am besten geeignet ist. –