Slide 1

Slide 1 text

fetchͱCORSʹજΉ᠘ EDWARD FOX @Meguro.es 2016/06/21

Slide 2

Slide 2 text

Edward Fox - Developer @ Repro Inc. - RoR, Javascript, AWS - UI/UX, Team Development

Slide 3

Slide 3 text

repro.io - ϞόΠϧΞϓϦ޲͚ ϚʔέςΟϯάπʔϧ

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ࠓ೔࿩͢͜ͱ fetch APIͷར༻ͱCORSʢCloudFrontʣ ͰϋϚͬͨ᠘

Slide 6

Slide 6 text

ࠓ೔࿩͞ͳ͍͜ͱ - fetch ͷৄ͍͠࢖͍ํ - CORS ͷৄࡉ - CloudFront ͷઃఆৄࡉ

Slide 7

Slide 7 text

fetchͱ͸ 1 WHATWGʹΑΔఆٛ - Fetchඪ४͸ɺϦΫΤετ, Ԡ౴, ͓Αͼ ͜ͷ̎ͭΛଋറ͢Δॲཧ — fetching ʢϦιʔεऔಘ ॲཧʣ— Λఆٛ͢Δɻ - Fetchඪ४ʹΑΓJavascriptͷfetch() API ΋ఏڙ͞ΕΔ

Slide 8

Slide 8 text

fetchͱ͸ 2-1 WHATWGͷఏڙ͢Δpolyfill࣮૷ - fetch APIͷ࢓༷ʹ४ڌ͢Δpolyfill ࣮૷ - https://github.com/github/fetch

Slide 9

Slide 9 text

fetchͱ͸ 2-2 GET fetch("/articles") .then(function(response) { return response.text(); }) .then(function(text) { document.body.innerHTML = text; })

Slide 10

Slide 10 text

΍Γ͔ͨͬͨ͜ͱ - ϝοηʔδ࡞੒ػೳͷ Ӿཡը໘Λ࡞Δ

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

- طଘͷ#editϖʔδ - fetchͰը૾Λऔಘ͠දࣔ - ৽͍͠#showϖʔδ - Rails͔Βը૾ϦϯΫΛؚΉ HTMLΛฦ͢

Slide 14

Slide 14 text

৽͘͠࡞ͬͨ#showϖʔδΛ ϦϦʔεʂ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

ͳ͔ͥؔ܎ͳ͍#editϖʔδͰ Կ΋දࣔ͞Εͳ͍ʂ

Slide 17

Slide 17 text

ରࡦ 1 fetchͷϔομΛม͑ͯΈΔ

Slide 18

Slide 18 text

fetch("/messages/1234", { headers: { "Accept": "application/json", "Content-Type": "application/json", } })

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

ରࡦ 2 CloudFront ͷCORSઃఆΛ͍͘͡Γ౗͢

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

ରࡦ 3 fetchͰCORSΛແޮʹ͢Δ

Slide 24

Slide 24 text

fetch("/messages/1234", { mode: "no-cors", })

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

࣮ࡍʹى͖͍ͯͨ͜ͱ 1. #showͰΫϥΠΞϯτʹը૾͕Ωϟογϡ͞ΕΔ ͨͩ͠ɺAccess-Control-Allow-Originϔομ͸ͳ͠ 2. ಉ͡ը૾Λ#editͰऔಘ͠Α͏ͱ͢Δ ͢ͰʹϦιʔε͸Ωϟογϡ͞Ε͍ͯΔ fetchͷCORSʹඞཁͳϔομ͕Ϧιʔεʹͳ͍ͨΊɺ fetchϦΫΤετࣗମ͕தஅ͞ΕΔ 3. runtime error Ҏ߱ͷॲཧ͸͢΂ͯதஅ͞Εɺը૾ΛؚΉશͯͷίϯ ςϯπ͕දࣔ͞Εͳ͍

Slide 28

Slide 28 text

ղܾࡦ fetchͷϔομʹ Λ௥Ճ pragma: “no-cache”

Slide 29

Slide 29 text

·ͱΊ ɾfetchΛ࢖ͬͯCORSͳϦιʔεΛ औಘ͢Δͱ͖͸ཁ஫ҙ ɾը໘ؒͰϦιʔεͷऔಘํ๏͕ ҟͳΔ͜ͱʹΑΔόά͕͋Δ͜ͱ Λ஌ͬͨ

Slide 30

Slide 30 text

ٙ໰ ɾΩϟογϡ͞Ε͍ͯΔ΋ͷΛΘ ͟Θ͟ແޮʹ͢Δͷ͕ద੾ͳͷ͔ʁ ɾΫϥΠΞϯτͰͷΩϟογϡʹ ىҼ͢ΔόάΛૣظʹݟ͚ͭΔʹ ͸ʁ

Slide 31

Slide 31 text

ࢀߟ: - Fetch Living Standard - Fetch API ղઆɺ·ͨ͸ Web ʹ͓͍ͯ "Fetch ͢Δ" ͱ͸Կ͔ʁ - ͓ർΕ͞·XMLHttpRequestɺ͜Μʹͪ͸fetch - [৽ػೳ] Amazon CloudFront͕CORSʹରԠ͠·ͨ͠ - fetch(), how do you make a non-cached request?

Slide 32

Slide 32 text

WE’RE HIRING! ❤

Slide 33

Slide 33 text

No content