2009-04-22 69 views
3

按照HTTP1.1 spec,一個接受以下如何解釋HTTP Accept頭文件?

Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c 

的頭部被解釋爲

text/html and text/x-c are the preferred media types, but if they do not 
exist, then send the text/x-dvi entity, and if that does not exist, send 
the text/plain entity 

讓我們頭更改爲:

Accept: text/html, text/x-c 

如果沒有什麼返回這是被接受的?例如讓我們假裝我只支持應用程序/ json

回答

4

也許你應該回應一個406不可接受。這就是我讀this的方法。

或a 415不支持的介質類型

我會選擇一個406,因爲在這種情況下,根據規格,迴應應該包括一個替代品列表。雖然我不清楚該列表應該是什麼樣子。

+0

406在這種情況下是正確的。 415適用於客戶端使用應用程序無法處理的Content-Type提交數據(例如,通過POST)的情況。 – 8jean 2009-04-23 18:57:48

2

「如果Accept頭字段存在,並且服務器無法根據組合的Accept字段值發送可接受的響應,那麼服務器應該發送406(不可接受)的響應。」 - RFC2616, Section 14.1

1

您有選擇。您可以使用406進行回覆,幷包含描述可用格式的「實體」(例如HTML或文本文件);或者,如果您使用的是HTTP 1.1,即使它未在Accept標頭中列出,也可以發送您支持的格式。

(見RFC 2616部分10.4.7)

「。注意:HTTP/1.1服務器被允許 返回其不是 根據在請求中發送的接受 頭可接受的響應。在一些 的情況下,這甚至可能優於 發送406響應。鼓勵用戶代理 檢查傳入響應的標題 以確定 是否可接受。