Rails Developers Meetup 2018: Day 1ãçºè¡¨è³æ https://techplay.jp/event/639872

ãã£ã Cache-Control ãããã®è©±ãæ¸ãããã§ããããã¡ãããã£ãã·ã¥å¶å¾¡ã«é¢ãã¦ã¯ Cache-Control ãããã ãã§åã¾ã話ã§ã¯ãªããä»ã«ãå¤ã ã®ããããå½±é¿ãä¸ãã¾ãã ãã®ä¸ã¤ã«ãVary ããããããã®ã§ãä»æ¥ã¯ãã®è©±ã§ãã Vary ããã Vary ãããã¯ãRFC7231 ã§å®ç¾©ããã¦ãããããã§ãã vary ã¨ããã¨ãå¤ãããã¨ããæå³ãæã¤åè©ã§ãããVary ãããã¯ãã®åã®éãããã©ã®ãããã«ãã£ã¦ã³ã³ãã³ããå¤ãã£ãã®ããã示ãã¬ã¹ãã³ã¹ãããã§ãã ä¾ãã°ãããããã¿ã¤ãã®ã¹ãã¼ããã©ã³å¯¾å¿ã® 1 ã¤ã¨ãã¦ãUser-Agent ããããè¦ã¦ãPC ç¨ HTML ãè¿å´ããããã¹ããã©ç¨ HTML ãè¿å´ããããåãæ¿ããå®è£ ãè¯ãè¦ã¾ãã ãã®å ´åãã¬ã¹ãã³ã¹ãããã« Vary: User-Agent ããããä»ããã®ã常å¥æ段ã§ããã¡ãªã¿
ã¹ããåã表示ãåãã¦ããã¨ãã¯Vary HTTPãããã¼ã使ãã㨠â â â â â ã°ã¼ã°ã«ãç解ã§ããããã« ï¼Google Webmaster Help on YouTubeï¼ã°ã¼ã°ã«ãæ¨å¥¨ããã¢ãã¤ã«ãµã¤ãæ§æã«ã¯3ã¤ç¨®é¡ãããããã¬ã¹ãã³ã·ãWebãã¶ã¤ã³ããåä¸URLã§ç«¯æ«ã«ãã£ã¦åºãåãããã¹ããåããå¥URLã§ä½ãããªãã¤ã¬ã¯ããããã®3ã¤ã ã ãã®ãã¡ã¬ã¹ãã³ã·ãWebãã¶ã¤ã³ä»¥å¤ã®2ã¤ã®æ§æã§ã¯ãã¢ã¯ã»ã¹ãã¦ãã端æ«ã®ãUser-Agentï¼UAãã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ãï¼ãã®æ å ±ã«åºã¥ãã¦PCã¨ã¹ãã¼ããã©ã³ã§ç°ãªãHTMLï¼ãCSSï¼ãè¿ãã ããã2ã¤ã®æ§æãæ¡ç¨ããéã«ã¯ãVary HTTPãããã¼ã使ç¨ãããã¨ãã°ã¼ã°ã«ã¯å¼·ãå§ãã¦ããã Vary HTTPãããã¼ã¨ã¯ããµã¼ãã¼ã«ã¢ã¯ã»ã¹ããã£ãã¨ãã«ããã¼ã¿ã¨ä¸ç·ã«ãµã¼ãã¼ããè¿ãHTTPãããã¼ã®1ã¤ã§ãVary
[20170809追è¨] nginx-1.13.4ã« ngx_http_mirror_module ã¯å«ã¾ãã¾ãã Nginxã§ããªã¯ã¨ã¹ããè¤è£½ããmirrorã¢ã¸ã¥ã¼ã«ãã³ããããããä½ãããã¨ã使ç¨ã§ããããã«ãªãããã§ã(ç¾ç¶ææ°ã³ãããããã«ãããå¿ è¦ãã)ã ä¾ãã°æ¬çªç°å¢ã®proxyãããªã¯ã¨ã¹ããè¤è£½ãã¦éçºç°å¢ã«æµããããªäºãåºæ¥ã¾ãããã¡ããè¤è£½å¦çã¯æ¬æ¥ã®ãªã¯ã¨ã¹ãå¦çããããã¯ãã¾ããã ä¾ãã°ä»¥ä¸ã®ããã«ãmirrorã«æ¥ããªã¯ã¨ã¹ããè¤è£½ãã¦ããã¯ã¨ã³ããµã¼ãã«æããããã«ãã¦ã¿ã¾ã conf server { listen 80 ; server_name localhost; mirror_request_body on; log_subrequest on; location /mirror { mirror /proxy; #/proxyå®ã«ãªã¯ã¨ã¹ãã
RESTã®è¦ç´ãURLã¯ãªã½ã¼ã¹ã§ãããCRUDã¯HTTPåè©ã«ããããããã RESTã®è¦ç´ã«1ã¤åé¡ãããã¨ããã°ãè¦ç´ãååã§ãªãã¨ãããã¨ã§ããããä¸è¨ã§âé常âãâå¤ãã®å ´åâãâæã«âã¨ãã表ç¾ã使ã£ãã®ã¯ããããã®ããæ¹ã¯ä»æ§ã§æ¨å¥¨ããã¦ãããã®ã®å®ãããã¨ã¯éããªãããã§ããå®ä¸çã§ã¯ã大æµã®APIã¯RESTishãããããã§ããä¾ãã°Stripeã§ã¯ããªã½ã¼ã¹æ´æ°ã« PUT ã§ã¯ãªã PATCH ã使ãã¹ãã§ãããæ´å²ççç±ã§ããã¯ãªã£ã¦ããããããããç¾æç¹ã§ã¯å¤æ´ã«å¤ããªãã§ãããããããã«ãã¦ãéçºè ã¯ããã¥ã¡ã³ããèªãå¿ è¦ãããããã®æã POST ã¡ã½ããã®ã¦ããã¿ã¹ãªä½¿ãæ¹ããããã¨ã«æ°ã¥ãã®ã§ãã RESTã«ã¯ä»ã®åé¡ãããã¾ããå¿ è¦ãªãã®ã ãã§ãªãå ¨ã¦ãè¿ã£ã¦ããããããªã½ã¼ã¹ã®ãã¤ãã¼ããé常ã«å¤§ãããªããã¨ãããã®ã§ããããã¦å¤ãã®å ´åãã¯ã©ã¤ã¢ã³ãã
HTTPãããã»ã¤ã³ã¸ã§ã¯ã·ã§ã³ï¼HTTP header injectionï¼ã¨ã¯ãHTTPã使ã£ã¦éä¿¡ããã·ã¹ãã ã«ããã¦ãåçã«HTTPããããçæããæ©è½ã®ä¸åãçªãã¦ãããè¡ãæ¿å ¥ãããã¨ã§ä¸æ£ãªåä½ãè¡ãªãããæ»æææ³ã®ãã¨ãã¾ãããã®æ»æãå¯è½ã¨ããèå¼±æ§ã®ãã¨ã SQLã¤ã³ã¸ã§ã¯ã·ã§ã³ãªã©ã¨åæ§ã«ãå ¥åå¤ãåºåã«ç¨ãã¦ããç®æã«ããã¦ãææ³ä¸ç¹æ®ãªæå³ãæã¤æåãã¨ã¹ã±ã¼ãããã«å±éãããã¨ã§çºçããã HTTPãããã«ãããç¹æ®æåã¨ã¯ãæ¹è¡ã³ã¼ãã§ãããåHTTPãããè¡ã¯æ¹è¡ã§çµäºãããã以éã¯æ°ããªãããè¡ã¨ãã¦å¦çãããããã®çµæãHTTPãããã®å¤ã¨ãã¦æ¹è¡ã³ã¼ããæ¿å ¥ãããã¨ãã§ããã°ãæ¬æ¥ã®éä¿¡å 容ã«ã¯å«ã¾ããªãããããæ¿å ¥ãããã¨ãã§ããã ã¾ããHTTPã¯ç©ºè¡ã«ãã£ã¦ãããã¨ããã£ãåºåã£ã¦ãããé£ç¶ããæ¹è¡ãæ¿å ¥ããã°HTTPãããã®çµäºã示ããã¨ã«ãªã
Webã¢ããªã±ã¼ã·ã§ã³ã®éçºã»å±éãè¡ã£ã¦ãã人ã ã«ã¨ã£ã¦ãã»ãã¥ãªãã£ç¢ºä¿ã¯å¤§ããªé¢å¿äºã®1ã¤ã ã¨ããã¾ãããã®ããã®ãã¹ããã©ã¯ãã£ã¹ããã¬ã¼ã ã¯ã¼ã¯ãã¬ã¤ãã©ã¤ã³ãæä¾ãã¦ããã®ãOWASPï¼Open Web Application Security Projectï¼ã§ããOWASPã®Wikiãµã¤ãï¼OWASP.orgï¼ã«ã¯ãWebã¢ããªã±ã¼ã·ã§ã³ã®ã»ãã¥ãªãã£ç¢ºä¿ã®ããã®æ§ã ãªæ å ±ãããã¾ããããããã®ä¸ã§ãå³å¹æ§ã®é«ãã®ãã便å©ãªHTTPãããã®ãªã¹ãï¼List of useful HTTP headersï¼ãã ã¨ãããã§ãããã ãã®ãã¼ã¸ã«ã¯ãã¢ããªã±ã¼ã·ã§ã³ã®HTTPã¬ã¹ãã³ã¹ã«è¿½å ãããã¨ã§ãäºå®ä¸ç¡æã§ã»ãã¥ãªãã£ãå¼·åã§ããHTTPãããã7種é¡æ²è¼ããã¦ãã¾ãã ãããã®ä¸ã§ã¾ãæ´»ç¨ãããã®ãã以ä¸ã®2ã¤ã®HTTPãããã§ãã X-XSS-Protection æè¿
æ´å²[13] RFC 2046 4.5.1. Octet-Stream SubtypeThe "octet-stream" subtype is used to indicate that a body contains arbitrary binary data. The set of currently defined parameters is: "octet-stream" äºåã¯æ¬æãä»»æã®ãã¤ããªã»ãã¼ã¿ã§ãããã¨ã 示ãã®ã«ä½¿ãã¾ããç¾å¨å®ç¾©ããã¦ãããã©ã¡ã¼ã¿ã¼ã®éåã¯ã 次ã®éãã§ãã (1) TYPE -- the general type or category of binary data. This is intended as information for the human recipient rather than for any automatic pr
âãXFFï¼ X-Forwarded-For ï¼ã¨ã¯ X-Forwarded-Forã¨ã¯ãHTTPããããã£ã¼ã«ãã®1ã¤ã§ããããã¼ããã©ã³ãµãªã©ã®æ©å¨ãçµç±ã㦠Webãµã¼ãã«æ¥ç¶ããã¯ã©ã¤ã¢ã³ãã®éä¿¡å IPã¢ãã¬ã¹ãç¹å®ããéã®ããã¡ã¯ãã¹ã¿ã³ãã¼ãã§ãã ã¯ã©ã¤ã¢ã³ãã®éä¿¡å IPã¢ãã¬ã¹ã®ç¹å®ã¯ããã¼ããã©ã³ãµãªã©ã§ã¯ã©ã¤ã¢ã³ãã®éä¿¡å IPã¢ãã¬ã¹ã å¤æãããå ´åã§ããHTTPãããã«å ã®ã¯ã©ã¤ã¢ã³ãIPã¢ãã¬ã¹ã®æ å ±ãä»å ãããã¨ã§å®ç¾ãã¾ãã âãXFFï¼ X-Forwarded-For ï¼ã使ç¨ããªãå ´å ä¾ãã°ãä¸å³ã®ããã«ã¯ã³ã¢ã¼ã æ§æã«ããã¦ãè¡ããã¨ãæ»ããã®ãã±ãããåãçµè·¯ãéãããã« ã¯ã©ã¤ã¢ã³ãã®éä¿¡å IPã¢ãã¬ã¹ãããã¼ããã©ã³ãµã®I/Fã®IPã¢ãã¬ã¹ã«å¤æãã¦éä¿¡ããã¨ãã¾ãã éä¿¡èªä½ã¯æ£å¸¸ã«è¡ããã¾ããããªã¢ã«ãµã¼ãã«çä¿¡ãããã±ããã®éä¿¡å IPã¯ãã
HTTPã¹ãã¼ã¿ã¹ã³ã¼ããè¿ãã¨ããã®ã¯ã¨ã¦ãåç´ãªãã¨ã§ãããã¼ã¸ãã¬ã³ããªã³ã°ã§ããï¼ããããããªã 200 ãè¿ãã¾ãããããã¼ã¸ãåå¨ããªãï¼ãããªã 404 ã§ããä»ã®ãã¼ã¸ã«ã¦ã¼ã¶ããªãã¤ã¬ã¯ããããï¼ 302 ãããã㯠301 ããããã¾ããã I like to imagine that HTTP status codes are like CB 10 codes. "Breaker breaker, this is White Chocolate Thunder. We've got a 200 OK here." â Aaron Patterson (@tenderlove) 2015, 10æ 7 訳ï¼HTTPã®ã¹ãã¼ã¿ã¹ã³ã¼ãã®ãã¨ã¯ãå¸æ°ã©ã¸ãªã®10ã³ã¼ãã¿ãããªãã®ã ã¨èããã®ã好ãã§ããããã¬ã¼ã«ã¼ããã¬ã¼ã«ã¼ããã¡ããã¯ã¤ãã»ãã§ã³ã¬ã¼ãã»ãµã³ãã¼ã200
Servlet ã«ãã WEB ã¢ããªã±ã¼ã·ã§ã³ã§ã¯ç»é¢é·ç§»ã®æ¹æ³ã« redirect(ãªãã¤ã¬ã¯ã) 㨠forward(ãã©ã¯ã¼ã) ãããã¾ããããããã®åä½ã®éãã¨ã¡ãªããããã¡ãªããã«ã¤ãã¦ã¾ã¨ãã¦ããã¾ãã redirect forward ã½ã¼ã¹
ä»æ´ã§ããã**CORS (Cross-Origin Resource Sharing)**ãè²ã 試ãã¦ããããæã£ã¦ãã以ä¸ã«è²ã ãã¿ã¼ã³ããããã¨ã«æ°ã¥ããã®ã§ãæ¹ãã¦ãã®æ±ãæ¹ã«ã¤ãã¦ã¾ã¨ãã¦ã¿ã¾ããã ãããã ç¾å¨ã®Webãã©ã¦ã¶ã§ã¯ãããWebãµã¤ããæã¤æ å ±ãå¥ã®æªæããWebãµã¤ãã«æªç¨ãããã®ãé²ãããã«ãSame-Origin Policy(æ¥æ¬èªã§ã¯åä¸çæå ããªã·ã¼)ãé©ç¨ããã¾ãã ä¾ãã°ãããWebãµã¤ã https://guiltysite.com ããã©ã¦ã¶ã§è¡¨ç¤ºãã¦ããæã«ããã®Webãã¼ã¸ããXMLHttpRequest(以ä¸ãXHR)ãFetch APIã§å¥ã®Webãµã¤ã https://innocentsite.net ããHTTP(S)ã§ãã¼ã¿ãèªã¿è¾¼ããã¨ããã¨ãã¨ã©ã¼ã«ãªããã¨ããããã§ãã ããããã¢ã¯ã»ã¹å ãæªæããWebãµã¤ããªãã¨ããã
æ§EMOBILE LTEã®åç·ã§ã¢ããªã®ãã¹ãããã¦ããã¨ãã«è¬ã®ä¸å ·åã¨ãã¦çºè¦ãã¾ããã ã¹ãã¼ããã¹ãããæ®éã®ãã©ã¦ã¸ã³ã°ã¯å¿«é©ã«è¡ãã¦ããã®ã«ä½æ ãzipãã¡ã¤ã«ã®è»¢éæã®ã¿ãã®ãããé ããªããæåã¯èªåã®ã¢ããªã®ä¸å ·åãçãã¾ãããHTTPéä¿¡å ¨è¬ã§çºçããããã§ãã ã å¥ç´åç·ã¯æ§EMOBILE LTEã§ããå½æã®ãå©ç¨éä¿¡éã10GB以ä¸ãã§å¸¯åå¶éãè¡ãã¨å ¬è¡¨ããã¦ãã¾ãã ãã¹ãããæ¥ã¾ã§ã®éä¿¡éã¯10.588GBã§ãç®å®ã®éä¿¡éãè¶ éãã¦ããç¶æ ã§ãã ãã®ç¶æ ã§HTTPã«ãããªã¯ã¨ã¹ããåºãã¨ããã¡ã¤ã«ç¨®é¡ã«ãã£ã¦æåãå¤ããã¾ãã æåãã¯ã©ã®ãããªæåã«ãªããä¸æãªã®ã§æ¥æã«ãªã£ãããã£ã¦ã¿ã¾ãã 以ä¸å®é¨çµæã§ãã 以ä¸ã³ãã³ãã§1MBã®ããã¼ãã¡ã¤ã«ãçæã % dd if=/dev/zero of=test.zip bs=1M count=1 ãã¡ã¤ã«ã®
iOS9, Xcode7 betaã«æ´æ°ãã¦ããã¢ããªã®å®è¡/ãã¹ãããããã¨ããã Error Domain=NSURLErrorDomain Code=-999 âThe operation couldnât be completed. (NSURLErrorDomain error -999.)â ã¨ãè¨ããã¦HTTPã§ã®éä¿¡ãå¼·å¶çã«HTTPSã«ãªãã®ãé²ãæ¹æ³ã§ããATSãç¡å¹ã«ããæ¹æ³ã ãã§ãªããå½±é¿ç¯å²ã ã¨ããWhite Listä½ã£ã¦å¯¾å¿ããæ¹æ³çã追è¨ãã¾ããã
2023å¹´03æ31æ¥è¿½è¨ï¼ãã®è¨äºãåºã«ã@sadnessOjisanãããããã³ã¼ãã¬ãã«ã«ããè¸ã¿è¾¼ãã ããã¤ãã°ãªã¼ã³ã¹ã¬ãããã¼ã¹ã®æ°ããWebãµã¼ãã¢ã¼ããã¯ãã£ãå«ãã¦æ´çãããè¨äº Webãµã¼ãã¼ã¢ã¼ããã¯ãã£é²åè«2023 | blog.ojisan.io ãå ¬éããã¾ããã 主ã«æ°åã®Webã¨ã³ã¸ãã¢åãã«ãå¤å ¸çãªWebãµã¼ãã¢ã¼ããã¯ãã£ãå¦ã¶éã®ãã¨ä»£è¡¨çãªå®è£ ã¢ãã«ã®æ¦è¦ãç´¹ä»ãã¾ãã ãã®è¾ºãã®è©±é¡ãWebçéã§æµè¡ã£ã¦ããã®ã¯æ°å¹´ä»¥ä¸åã¨ããã¤ã¡ã¼ã¸ã§ãããWebãµã¼ãã¹ã¯ç¸å¤ãããWebãµã¼ãã®ä¸ã§åãã¦ããã®ã§ãæµè¡ãå»ãé¢ä¿ãªãå¦ã¶ã¹ãå 容ã ã¨æã£ã¦ãã¾ãã ã¾ããHTTP/2ãããããRFCåããæ¢ã«h2oãtrusterdãªã©ã®HTTP/2ã®ãµã¼ãå®è£ ããããä»å¾Webãµã¼ãã¢ã¼ããã¯ãã£ãå訪ãããã¨ãå¢ãããããªæ°ããã¦ãã¾ãã ã¨ããããWe
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãç¥ãã
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}