2011-01-13 5 views
4

Ich lese die HTTP Header Field Definitions, um Header korrekt zu analysieren und stolpere über die Akzeptanz-Erweiterung Felddefinition. Sie sind Teil der Header angibt Vorrang annehmen, die folgende Reihenfolge geben würde:Sind HTTP-Exclude-Erweiterungen exklusiv?

text/html;level=1;param=other 
// Less specific : 
text/html;level=1 
// Less specific: 
text/html 
// Even less specific 
text/* 

Ich bin nicht sicher, was passieren soll, wenn ein Client Anfragen/html; level = 1, aber ich habe nur ein Content-Provider für Text/HTML. Schicke ich den Text/HTML-Inhalt oder einen Fehler 406 (nicht akzeptabel)?

+1

Beachten Sie, dass gemäß dem RFC in den Beispielen, die Sie level = 1 und param = other angegeben haben, die Parameter für den Medienbereich angegeben sind und keine Erweiterungen akzeptiert werden. Accept-Erweiterungen sind alles andere als der Qualitätswert und werden in der Praxis nach meinem besten Wissen praktisch nicht genutzt. –

+0

Akzeptieren-Parameter werden für die API-Versionierung populär, z. 'Akzeptieren: application/json; version = 1'. Der Qualitätsfaktor 'q =' ist laut [RFC7231] (https://tools.ietf.org/html/rfc7231#section-5.3.2) völlig optional. – ioquatix

Antwort

1

In Ihrem Beispiel, würden Sie ein 406. zurückzuschicken Wenn sie auch einen grundlegenden text/html annehmen kann, sollen sie diese senden:

Accept: text/html, text/html;level=1 

Beachten Sie, dass Reihenfolge keine Rolle spielt, und die spezifischste hat immer Vorrang.

+0

Danke, hört sich gut an, es war auch mein Standardverhalten. Alles andere sollte jetzt nach dem RFC funktionieren :) – Daff

+0

Viel Glück. Http ist eine launische Geliebte. – Kylar

+0

Es wird tatsächlich an mehreren Stellen im RFC vorgeschlagen, dass die Reihenfolge nicht irrelevant ist, z. http://stackoverflow.com/a/35181217/293815 – ioquatix

Verwandte Themen