Content-Digest ãããã¼
HTTP ã® Content-Digest ãªã¯ã¨ã¹ãã»ã¬ã¹ãã³ã¹ãããã¼ã¯ãã¡ãã»ã¼ã¸ã®ã³ã³ãã³ãã«ããã·ã¥ã¢ã«ã´ãªãºã ãé©ç¨ãã¦è¨ç®ããããã¤ã¸ã§ã¹ããæä¾ãã¾ãã
åä¿¡å´ã¯ãå®å
¨æ§ã確èªããããã«ãContent-Digest ã使ç¨ã㦠HTTP ã¡ãã»ã¼ã¸ã®ã³ã³ãã³ããæ¤è¨¼ãããã¨ãã§ãã¾ãã
Want-Content-Digest ãã£ã¼ã«ãã使ç¨ããã¨ãéä¿¡è
ã¯ããã·ã¥ã¢ã«ã´ãªãºã ã®è¨å®ã¨ã¨ãã« Content-Digest ããªã¯ã¨ã¹ããããã¨ãã§ãã¾ãã
ã³ã³ãã³ããã¤ã¸ã§ã¹ãã¯ãContent-Encoding ããã³ Content-Range ã«ãã£ã¦ç°ãªãã¾ãããTransfer-Encoding ã«ããéãã¯ããã¾ããã
å ´åã«ãã£ã¦ã¯ãRepr-Digest ã使ç¨ãããã¨ãã§ãã¾ããããã«ãããé¨åã¡ãã»ã¼ã¸ããã«ããã¼ãã¡ãã»ã¼ã¸ã®å®å
¨æ§ããå®å
¨ãªè¡¨ç¾ã¨ç
§åãã¦æ¤è¨¼ãããã¨ãã§ãã¾ãã
ä¾ãã°ãç¯å²ãªã¯ã¨ã¹ãã®å ´åããªã¯ã¨ã¹ãããããã¤ãç¯å²ã®ã¿ãç°ãªãå ´åãRepr-Digest ã®å¤ã¯å¸¸ã«åãã«ãªãã¾ãããã³ã³ãã³ããã¤ã¸ã§ã¹ãã¯ããããã®ãã¼ãã§ç°ãªãã¾ãã
ãã®ãããåä¸ã®ã¡ãã»ã¼ã¸ã§è¡¨ç¾ãéä¿¡ãããå ´åãContent-Digest 㯠Repr-Digest ã¨åä¸ã¨ãªãã¾ãã
| ãããã¼ç¨®å¥ | ãªã¯ã¨ã¹ããããã¼, ã¬ã¹ãã³ã¹ãããã¼, 表ç¾ãããã¼ |
|---|---|
| ç¦æ¢ãªã¯ã¨ã¹ããããã¼ | ããã |
æ§æ
Content-Digest: <digest-algorithm>=<digest-value>
// è¤æ°ã®ãã¤ã¸ã§ã¹ãã¢ã«ã´ãªãºã
Content-Digest: <digest-algorithm>=<digest-value>,<digest-algorithm>=<digest-value>, â¦
ãã£ã¬ã¯ãã£ã
<digest-algorithm>-
ã¡ãã»ã¼ã¸ã®ã³ã³ãã³ãã®ãã¤ã¸ã§ã¹ãã使ããããã«ä½¿ç¨ããã¢ã«ã´ãªãºã ã å®å ¨ã§ããã¨è¦ãªãããç»é²æ¸ã¿ã®ãã¤ã¸ã§ã¹ãã¢ã«ã´ãªãºã ã¯ã
sha-512ã¨sha-256ã® 2 ã¤ã ãã§ãã å®å ¨ã§ãªãï¼å¤ãï¼ç»é²æ¸ã¿ãã¤ã¸ã§ã¹ãã¢ã«ã´ãªãºã ã¯ãmd5ãsha(SHA-1)ãunixsumãunixcksumãadler(ADLER32)ãcrc32cã§ãã <digest-value>-
<digest-algorithm>ã使ç¨ãããã¨ã§ç®åºããããã¡ãã»ã¼ã¸ã³ã³ãã³ãã®ãã¤ãåä½ã®ãã¤ã¸ã§ã¹ãã ãã¤ã¸ã§ã¹ãã¢ã«ã´ãªãºã ã®é¸æã«ãã£ã¦ã使ç¨ããã¨ã³ã³ã¼ãæ¹å¼ã決ã¾ãã¾ããsha-512ãsha-256㯠base64 ã¨ã³ã³ã¼ãæ¹å¼ã使ç¨ãã¾ãããunixsumãªã©ã®ä¸é¨ã®å¤ããã¤ã¸ã§ã¹ãã¢ã«ã´ãªãºã ã¯10鲿´æ°ã使ç¨ãã¾ãã 仿§ã®ä»¥åã®èæ¡ã¨ã¯ç°ãªããæ¨æºã® Base64 ã¨ã³ã³ã¼ãããããã¤ã¸ã§ã¹ããã¤ãã¯ãè¾æ¸æ§æã®ä¸é¨ã¨ãã¦ã³ãã³ (:, ASCII 0x3A) ã§å²ã¾ãã¦ãã¾ãã
解説
以åã®ä»æ§ã§ã¯ Digest ãããã¼ãå®ç¾©ããã¦ãã¾ãããããã¤ã¸ã§ã¹ããé©ç¨ãããç¯å²ãæç¢ºã§ãªãã£ããããåé¡ãçãã¾ããã
仿§ä¸ããã¤ã¸ã§ã¹ãããªã½ã¼ã¹è¡¨ç¾å
¨ä½ã«é©ç¨ãããã®ããããã¨ã HTTP ã¡ãã»ã¼ã¸ã®ç¹å®ã®ã³ã³ãã³ãã«é©ç¨ãããã®ããå¤å¥ãããã¨ãå°é£ã§ããã
ãã®ãããHTTP ã¡ãã»ã¼ã¸ã®ã³ã³ãã³ããã¤ã¸ã§ã¹ãã¨ãªã½ã¼ã¹ã®è¡¨ç¾ãã¤ã¸ã§ã¹ããããããä¼éããããã«ã2 ã¤ã®å¥åã®ãããã¼ï¼Content-Digest ããã³ Repr-Digestï¼ãå®ç¾©ããã¾ããã
ä¾
>SHA-256 Content-Digest ã«å¯¾ããã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã®ãªã¯ã¨ã¹ã
次ã®ä¾ã§ã¯ãã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãããSHA-256 ãæ¨å¥¨ããæ¬¡ãã§åªå 度ã®ä½ã SHA-1 ã使ç¨ãã¦ãã¡ãã»ã¼ã¸ã³ã³ãã³ãã®ãã¤ã¸ã§ã¹ãããªã¯ã¨ã¹ããã¦ãã¾ãã
GET /items/123 HTTP/1.1
Host: example.com
Want-Content-Digest: sha-256=10, sha=3
ãµã¼ãã¼ã¯ãSHA-256 ã¢ã«ã´ãªãºã ã使ç¨ãã¦ã¡ãã»ã¼ã¸ã®ã³ã³ãã³ãã® Content-Digest ãè¿ãã¾ãã
HTTP/1.1 200 OK
Content-Type: application/json
Content-Digest: sha-256=:RK/0qy18MlBSVnWgjwz6lZEWjP/lF5HF9bvEF8FabDg=:
{"hello": "world"}
Content-Digest 㨠Repr-Digest ã®å¤ãåä¸ã§ããå ´å
ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãããWant-Content-Digest ãã£ã¼ã«ããæå®ããã«ãªã½ã¼ã¹ããªã¯ã¨ã¹ãããå ´åã
GET /items/123 HTTP/1.1
Host: example.com
ãã®ãµã¼ãã¼ã¯ãã¬ã¹ãã³ã¹ã«è¦æ±ããã¦ããªããã¤ã¸ã§ã¹ããããã¼ãéä¿¡ããããã«è¨å®ããã¦ãã¾ãã
Repr-Digest ãã£ã¼ã«ã㨠Content-Digest ãã£ã¼ã«ãã®å¤ãä¸è´ãã¦ããã®ã¯ãåãã¢ã«ã´ãªãºã ã使ç¨ããã¦ããããªã½ã¼ã¹å
¨ä½ã 1 ã¤ã®ã¡ãã»ã¼ã¸ã§éä¿¡ããã¦ããããã§ãã
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 19
Content-Digest: sha-256=:RK/0qy18MlBSVnWgjwz6lZEWjP/lF5HF9bvEF8FabDg=:
Repr-Digest: sha-256=:RK/0qy18MlBSVnWgjwz6lZEWjP/lF5HF9bvEF8FabDg=:
{"hello": "world"}
Content-Digest 㨠Repr-Digest ã®å¤ãä¸è´ããªãå ´å
ååã®ä¾ã¨åããªã¯ã¨ã¹ããç¹°ãè¿ããGET ã®ä»£ããã« HEAD ã¡ã½ããã使ç¨ããå ´åãRepr-Digest ããã³ Content-Digest ãã£ã¼ã«ãã®å
容ã¯ç°ãªãã¾ãã
GET /items/123 HTTP/1.1
Host: example.com
Repr-Digest ã®å¤ã¯ä»¥åã¨åãã§ãããã¡ãã»ã¼ã¸ã®æ¬ä½ããªãããããµã¼ãã¼ããã¯ç°ãªã Content-Digest ãéä¿¡ããã¾ãã
HTTP/1.1 200 OK
Content-Type: application/json
Content-Digest: sha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=:
Repr-Digest: sha-256=:RK/0qy18MlBSVnWgjwz6lZEWjP/lF5HF9bvEF8FabDg=:
ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãããªã¯ã¨ã¹ãã§ Content-Digest ãéä¿¡ããå ´å
次ã®ä¾ã§ã¯ãã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãã SHA-512 ã使ç¨ãã¦ã¡ãã»ã¼ã¸å
容ã®ãã¤ã¸ã§ã¹ããéä¿¡ãã¾ãã
Content-Digest 㨠Repr-Digest ã®ä¸¡æ¹ãéä¿¡ãã¾ãããããã㯠Content-Encoding ã®éãã«ããäºãã«ç°ãªãã¾ãã
POST /bank_transfer HTTP/1.1
Host: example.com
Content-Encoding: zstd
Content-Digest: sha-512=:ABCâ¦=:
Repr-Digest: sha-512=:DEFâ¦=:
{
"recipient": "Alex",
"amount": 900000000
}
ãµã¼ãã¼ã¯ãåä¿¡ããã³ã³ãã³ãã®ãã¤ã¸ã§ã¹ããè¨ç®ãããã®çµæã Content-Digest ã¾ã㯠Repr-Digest ãããã¼ã¨æ¯è¼ãããã¨ã§ãã¡ãã»ã¼ã¸ã®æ´åæ§ãæ¤è¨¼ããå ´åãããã¾ãã
ä¸è¨ã®ä¾ã¨åæ§ã«ããªã¯ã¨ã¹ãã§ã¯ãRepr-Digest ã®æ¹ããµã¼ãã¼ã«ã¨ã£ã¦æç¨ã§ããããã¯ããã³ã¼ãããã表ç¾ã«åºã¥ãã¦è¨ç®ãããããããã¾ãã¾ãªã·ããªãªã«ããã¦ããä¸è²«æ§ãé«ããªãããã§ãã
仿§æ¸
| 仿§æ¸ |
|---|
| Digest Fields > # section-2 > |
ãã©ã¦ã¶ã¼ã®äºææ§
ãã®ãããã¼ã«ã¯ã仿§ã§å®ç¾©ããããã©ã¦ã¶ã¼ã¨ã®é£æºæ©è½ã¯ããã¾ããï¼ããã©ã¦ã¶ã¼ã®äºææ§ãã¯é©ç¨ããã¾ããï¼ã
éçºè
ã¯ãHTTP ãããã¼ã fetch() ã§è¨å®ããã³åå¾ãã¦ãã¢ããªã±ã¼ã·ã§ã³åºæã®å®è£
åä½ãå®ç¾ãããã¨ãã§ãã¾ãã
é¢é£æ å ±
Want-Content-Digestãããã¼ãã³ã³ãã³ããã¤ã¸ã§ã¹ãããªã¯ã¨ã¹ãããããã®ãã®Repr-Digest,Want-Repr-Digest表ç¾ãã¤ã¸ã§ã¹ããããã¼ETag- Digital Signatures for APIs SDK ã¬ã¤ãã§ã¯ãHTTP å¼ã³åºãã«ããããã¸ã¿ã«ç½²åã«
Content-Digestã使ç¨ãã¦ãã¾ãï¼developer.ebay.comï¼