2014-01-09 48 views
18

當構建一個RESTful HTTP服務,並且一個響應與一個204沒有內容(例如,在消費者發出一個DELETE請求之後)一起給出時,Response應該包含什麼Content-Type?204無響應使用什麼內容類型?

是否應該省略? 是否有首選的內容類型? 它是否應該是相同資源的GET請求的內容類型? 這無關緊要嗎?

+0

與以下內容有關或可能存在重複內容:[應該在消息正文爲空時顯示內容類型標頭](http://stackoverflow.com/questions/29784398/should-content-type-header-be-present - 當郵件正文爲空) – Helen

+0

是的,另一個問題在問了15個月後重復了我的問題。 –

回答

25

你必須Content-Type當你有內容即使在當時它是可選的:

任何HTTP/1.1消息含有實體機構應包括一個Content-Type首部字段限定了主體的媒體類型。

(從RFC2616, §7.2.1,請注意使用SHOULD)。

由於沒有內容,因此沒有理由指定Content-Type標題。

+0

我相信https://tools.ietf.org/html/rfc2616#section-7.2.1是你正在尋找的。 –

+0

是的,確切地說。請參閱編輯的具體參考:) –

6

嗯,這個故事還有一點,當真實世界(瀏覽器)符合理論世界(規範)時,它就涉及到了。似乎火狐瀏覽器(我寫這篇文章是第38版)有一個錯誤,即如果沒有內容類型頭,瀏覽器試圖將內容解析爲xml,即使響應代碼是204(無內容)。見https://bugzilla.mozilla.org/show_bug.cgi?id=521301

所以,雖然內容類型頭沒有什麼意義,當沒有內容(並且不能在204上的內容),無論如何返回一些頭似乎是有意義的。我不知道這會違反規範。

+1

該錯誤似乎現在已經修復。 –

+0

感謝您的更新。雖然我注意到他們說:「XHR的responseXML將爲空,解析失敗將簡單地記錄到Web控制檯。」所以我們仍然在創建控制檯特效...我會堅持w /仍然返回Content-Type標頭。 –

+0

當瀏覽器得到響應時,似乎並沒有發生錯誤,但當瀏覽器*嘗試使用['responseXML']獲取XML *(https://developer.mozilla.org/en-US/docs/Web/ API /的XMLHttpRequest/responseXML的)。如果是這樣的話,我想知道這是否是一個錯誤。 –

相關問題