Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#2

Re: IdHTTP.AcceptEncoding ohne "Identity"???

  Alt 26. Feb 2009, 15:24
Hi romber,

auskommentieren brauchst Du das nicht!

Identity Encoding wird nach RFC2616 immer akzeptiert, außer es ist explizit deaktiviert. Daher wird es zur Sicherheit, wenn nicht bereits vom Programmierer angegeben, angefügt - so erfüllt es in jedem Fall die RFC.

Um Identitity-Encoding abzuschalten mußt Du also das AE für Identity deaktivieren z.B. mit:
IdHTTP1.Request.AcceptEncoding := 'gzip, deflate;q=1.0, identity;q=0'; oder
IdHTTP1.Request.AcceptEncoding := 'gzip, deflate;q=1.0, *;q=0'; Wobei die erste Variante zwar Identity explizit deaktiviert, aber trotzdem noch neben gzip und deflate dem Server die Wahl weiterer Encodings läßt. Die zweite Variante erlaubt explizit nur gzip und komprimiertes Encoding, verweigert aber jedes andere Encoding.

Wenn der Server sich an die Standards (RFC2616, s.o.) hält, müßte dann ein 406 ("Not Acceptable") als Fehler kommen wenn der Server in einem anderen Encoding senden will/muß.

Gruß Assertor

Edit: Gerade gesehen, wenn die Funktion wie oben gepostet noch in Indy steht würde das mit der RFC bei meiner 2. Variante kollidieren. Ich prüf das mal ab. Bis dahin also die erste Variante nehmen.

Edit2: Ich hab das gerade dem Team weitergeleitet. Ich denke jetzt 1) Du hast was falsch verstanden bzgl. Identity (was immer an es, außer es it aus). Meine Beispiele sollten also richtig sein 2) trotzdem ich Dir danken muß, denn dadurch hab ich den Bug für meine o.g. 1. AE Variante entdeckt.

Frederik
  Mit Zitat antworten Zitat