Protocol Buffer MIME 型別
Protobuf 序列化的標準 MIME 型別。
所有 Protobuf 文件都應具有 MIME 型別 application 和子型別 protobuf,對於 JSON 編碼,根據 標準,應帶有後綴 +json,後跟以下引數
encoding應只設置為binary或json,表示相應的格式。- 對於子型別
protobuf+json,encoding的預設值為json,不能設定為binary。對於子型別protobuf(不帶+json),encoding的預設值為binary,不能設定為json。 - 即使在 HTTP 響應中使用解析器中斷器作為 CORB 緩解措施,JSON 也應使用
+json。
- 對於子型別
- 所有 JSON 或文字格式編碼的
charset均設定為utf-8,二進位制編碼則永遠不設定。- 如果未指定
charset,則假定為 UTF-8。建議始終指定charset,因為當 proto 用於 HTTP 響應時,這可以防止某些攻擊向量。
- 如果未指定
- Protobuf 保留
version引數,用於未來我們線格式的潛在版本控制。線上格式版本化之前,請勿設定此引數。
因此,常見 protobuf 編碼的標準 MIME 型別如下:
application/protobuf用於序列化的二進位制 proto。application/protobuf+json; charset=utf-8用於 JSON 格式的 proto。
讀取 Protobuf 的服務也應處理 application/json,它可用於編碼 JSON 格式的 proto。
如果 MIME 引數(encoding、charset 或 version)具有未知或非法值,則解析器必須失敗。
當二進位制 proto 透過 HTTP 傳輸時,Protobuf 強烈建議對其進行 Base64 編碼並設定 X-Content-Type-Options: nosniff 以防止 XSS,因為 Protobuf 可能被解析為活動內容。
如果需要,可以向這些 MIME 型別傳遞附加引數,例如指示內容模式的型別 URL;但是 MIME 型別引數絕不能包含編碼選項。