2017-04-17 45 views
1

請求標頭的值(例如Accept-Language,Accept-Encoding等)具有隱式或顯式加權值(例如en; q=0.8)。如果加權的HTTP頭具有重複值,權重不同,應如何處理?

在不太可能發生完整字段值收率曖昧信息,具體地,如果歧義可以解釋爲任一不能接受的(q=0)或可接受的,因爲一些非零質量值,例如分析得到的值:

Accept-Encoding: gzip; q=0.8, gzip; q=0 

應此被解釋爲:

  1. 不能接受;
  2. 可接受;
  3. 標題無效;

或其他一些選擇,也許?

RFC 7231,對質量的一般section 5.3.1

重被歸一化爲範圍從0到1,其中 0.001是最優選的,而1是最優選的實數; 0表示「不可接受」。如果沒有 「Q」 參數存在, 默認權重爲1

Accept-Encoding特異性section 5.3.4,第3和第4

  • 如果該表示的內容編碼是Accept-Encoding字段中列出的 內容編碼之一,那麼它是 可接受的,除非其伴隨有q值爲q的值(如在第5.3.1節中定義的 ,q值爲0意味着「不可接受」。)

  • 如果多個內容編碼是可接受的,則可接受的具有最高非零q值的內容編碼是優選的。

  • 說清楚q=0的意思是「不能接受的」,並且最高非零qvalue是首選,但他們似乎並沒有討論任何可能的不確定性;可能是因爲這是不太可能的事件。

    回答

    1
  • 如果表示的內容的編碼是在接受編碼字段中列出的 內容編碼之一,那麼它是 可接受除非它是伴隨着一個qvalue爲0(如在5.3.1節中定義 ,0 qvalue意思是「不能接受的」。)

  • 如果多個內容編碼是可接受的,則可以接受 內容編碼具有最高非零q值是首選。

  • Accept-Encoding: gzip; q=0.8, gzip; q=0具有單個內容編碼gzip哪一個是重複具有不同qvalue的。

    • 首先,它是伴隨着qvalue 0.8其是「可接受的」
    • 其次,它是伴隨着qvalue 0這是「不可接受的」。

    當我讀到的報價規則:看

    1. 檢查內容編碼是伴隨着零qvalue;如果是這樣,那是「不可接受的」;
    2. 否則,取所有副本的最大q值權重。

    所以,我的解釋是,下面的兩行是等價的:

    Accept-Encoding: gzip, gzip;q=0.001, compress;q=0.1, compress;q=0, *;q=0.2, *;q=0.1 
    Accept-Encoding: gzip;q=1, compress;q=0, *;q=0.2 
    

    ,併爲你的榜樣,下面兩行是相同的:

    Accept-Encoding: gzip; q=0.8, gzip; q=0 
    Accept-Encoding: gzip;q=0 
    
    相關問題