OPTIONS ãªã¯ã¨ã¹ãã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
HTTP ã® OPTIONSã¡ã½ããã¯ãæå®ããã URL ã¾ãã¯ãµã¼ãã¼ã®è¨±å¯ããã¦ããéä¿¡ãªãã·ã§ã³ããªã¯ã¨ã¹ããã¾ãã
ããã使ç¨ãã¦ããªã¯ã¨ã¹ãã§è¨±å¯ããã¦ãã HTTP ã¡ã½ãããæ¤æ»ããããCORS ããªãã©ã¤ããªã¯ã¨ã¹ããå®è¡ããéã«ãªã¯ã¨ã¹ããæåãããã©ããã夿ãããã§ãã¾ãã
ã¯ã©ã¤ã¢ã³ãã¯ãã®ã¡ã½ããã§ URL ãããµã¼ãã¼å
¨ä½ã表ãã¢ã¹ã¿ãªã¹ã¯ (*) ãæå®ãããã¨ãã§ãã¾ãã
| ãªã¯ã¨ã¹ãã®æ¬æ | å¯* |
|---|---|
| æåæã®ã¬ã¹ãã³ã¹ã®æ¬æ | å¯ |
| å®å ¨æ§ | ãã |
| ã¹ãçæ§ | ãã |
| ãã£ãã·ã¥ | ä¸å¯ |
| HTML ãã©ã¼ã ã§ã®ä½¿ç¨ | ä¸å¯ |
* OPTIONS ã¡ãã»ã¼ã¸ã«ãªã¯ã¨ã¹ãæ¬ä½ãä»ãããã¨ã¯æè¡çã«èªãããã¦ãããã®ã®ããã®æå³ã¥ãã¯å®ç¾©ããã¦ãã¾ããã
OPTIONS ã¡ãã»ã¼ã¸ã«æ¬ä½ãå«ãããã¨ã¯å¯è½ã§ãããã ããæå¹ãª Content-Type ãããã¼ãæä¾ãããã¤ãµã¼ãã¼ããããæå¾
ãã¦ãããã¨ãããã£ã¦ããå ´åã«éãã¾ãããã®åä½ã¯å®è£
ä¾åã§ãã
æ§æ
OPTIONS *|<request-target>["?"<query>] HTTP/1.1
ãªã¯ã¨ã¹ã対象ã¯ããµã¼ãã¼å
¨ä½ã示ããã¢ã¹ã¿ãªã¹ã¯å½¢å¼ã*ãã¾ãã¯ä»ã®ã¡ã½ããã§ä¸è¬çãªãªã¯ã¨ã¹ã対象ã®ã©ã¡ããã«ãªãã¾ãã
*-
ã¯ã©ã¤ã¢ã³ããããã®ãµã¼ãã¼ã®ç¹å®ã®ååä»ããªã½ã¼ã¹ã§ã¯ãªãããµã¼ãã¼å ¨ä½ã«å¯¾ãã¦
OPTIONSããªã¯ã¨ã¹ããããã¨ã叿ãã¦ãããã¨ã示ãã¾ãã <request-target>-
Hostãããã¼ã§æå®ãããæ å ±ã¨çµã¿åããã¦ããªã¯ã¨ã¹ãã®å¯¾è±¡ãªã½ã¼ã¹ãç¹å®ãã¾ãã ããã¯ããªãªã¸ã³ãµã¼ãã¼ã¸ã®ãªã¯ã¨ã¹ãã§ã¯çµ¶å¯¾ãã¹ï¼ä¾ï¼/path/to/file.htmlï¼ã§ããããããã·ã¼ã¸ã®ãªã¯ã¨ã¹ãã§ã¯çµ¶å¯¾ URLï¼ä¾ï¼http://www.example.com/path/to/file.htmlï¼ã§ãã <query>çç¥å¯-
çå符
?ã§å§ã¾ããªãã·ã§ã³ã®ã¯ã¨ãªã¼æåã§ãã ãã°ãã°è奿 å ±ãkey=valueã®çµã¨ããå½¢ã§ä¿æããããã«ä½¿ç¨ããã¾ãã
ä¾
>許å¯ããããªã¯ã¨ã¹ãã¡ã½ããã®èå¥
ãµã¼ãã¼ã対å¿ãã¦ãããªã¯ã¨ã¹ãã¡ã½ããã調ã¹ãã«ã¯ã curl ã使ç¨ã㦠OPTIONS ãªã¯ã¨ã¹ããçºè¡ãã¦ãã ããã
curl -X OPTIONS https://example.org -i
ããã¯ä»¥ä¸ã® HTTP ãªã¯ã¨ã¹ããçæãã¾ãã
OPTIONS / HTTP/2
Host: example.org
User-Agent: curl/8.7.1
Accept: */*
ã¬ã¹ãã³ã¹ã«ã¯ã許å¯ããã¦ããã¡ã½ãããå
¥ã£ã Allow ãããã¼ãå«ã¾ãã¦ãã¾ãã
HTTP/1.1 204 No Content
Allow: OPTIONS, GET, HEAD, POST
Cache-Control: max-age=604800
Date: Thu, 13 Oct 2016 11:45:00 GMT
Server: EOS (lax004/2813)
CORS ã§ã®ããªãã©ã¤ããªã¯ã¨ã¹ã
CORS ã§ã¯ãããªãã©ã¤ããªã¯ã¨ã¹ãã OPTIONS ã¡ã½ããã§éä¿¡ããã¨ããµã¼ãã¼ã¯ãªã¯ã¨ã¹ããéä¿¡ãã¦åãä»ãããããã©ãããå¿çã§ããããã«ãã¾ããä¸è¨ã®ä¾ã§ã¯ã次ã®å¼æ°ã«å¯¾ãã許å¯ãè¦æ±ãã¾ãã
- ããªãã©ã¤ããªã¯ã¨ã¹ãã§éä¿¡ããã
Access-Control-Request-Methodãããã¼ã¯ãå®éã®ãªã¯ã¨ã¹ããéä¿¡ããéã«ããªã¯ã¨ã¹ãã¡ã½ãããPOSTã§ãããã¨ããµã¼ãã¼ã«ç¥ããã¾ãã Access-Control-Request-Headersãããã¼ã¯ãå®éã®ãªã¯ã¨ã¹ãéä¿¡æã«X-PINGOTHERã¨Content-Typeãããã¼ãæã¤ãã¨ããµã¼ãã¼ã«ç¥ããã¾ãã
OPTIONS /resources/post-here/ HTTP/1.1
Host: bar.example
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Connection: keep-alive
Origin: https://foo.example
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type,x-pingother
ãµã¼ãã¼ã¯ããã®ãããªç¶æ³ä¸ã§ãªã¯ã¨ã¹ããåãå ¥ãããã©ãããå¿çãããã¨ãã§ããããã«ãªãã¾ãããä¸è¨ã®ä¾ã§ã¯ããµã¼ãã¼ã®ã¬ã¹ãã³ã¹ã¯æ¬¡ã®ããã«è¨ã£ã¦ãã¾ãã
Access-Control-Allow-Origin-
https://foo.exampleã®ãªãªã¸ã³ã¯ã以ä¸ã®æ¹æ³ã§bar.example/resources/post-here/ã® URL ããªã¯ã¨ã¹ããããã¨ã許å¯ããã¦ãã¾ãã Access-Control-Allow-Methods-
POST,GET,OPTIONSããã® URL ã§è¨±å¯ããã¦ããã¡ã½ããã§ããï¼ãã®ãããã¼ã¯Allowã¬ã¹ãã³ã¹ãããã¼ã«ä¼¼ã¦ãã¾ãããCORS ã§ã®ã¿ä½¿ç¨ãã¾ããï¼ Access-Control-Allow-Headers-
ã¬ã¹ãã³ã¹ãæ¤æ»ããã¹ã¯ãªããã¯
X-PINGOTHERã¨Content-Typeãããã¼ã®å¤ãèªã¿åããã¨ã許å¯ããã¾ãã Access-Control-Max-Age-
ä¸è¨ã®è¨±å¯ã¯ã 86,400 ç§ï¼1 æ¥ï¼ãã£ãã·ã¥ãããå¯è½æ§ãããã¾ãã
HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 01:15:39 GMT
Server: Apache/2.0.61 (Unix)
Access-Control-Allow-Origin: https://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400
Vary: Accept-Encoding, Origin
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
ã¡ã¢:
200 OK 㨠204 No Content ã®ä¸¡æ¹ã 許å¯ããã¦ããã¹ãã¼ã¿ã¹ã³ã¼ãã§ããããã©ã¦ã¶ã¼ã«ãã£ã¦ã¯èª¤ã£ã¦ 204 No Content ããªã½ã¼ã¹ã«é©ç¨ãããã¨å¤æãããã®å¾ãªã½ã¼ã¹ãåå¾ããããã®ãªã¯ã¨ã¹ããéä¿¡ããªããã¨ãããã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| HTTP Semantics > # OPTIONS > |