🐼Before Start Mini Node Server (3)

πŸš€CORS 리뷰 및 적용

1. μ˜›λ‚ 

μ΄μ „μ—λŠ” μ„œλ²„κ°€ 자체 ν΄λΌμ΄μ–ΈνŠΈλ₯Ό 가지고 μžˆμ—ˆμŒ.

각각의 μœ μ € ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—μ„œ 내렀받은 ν΄λΌμ΄μ–ΈνŠΈλ‘œ 톡신 ν–ˆλ‹€κ³  ν•œλ‹€. κ·Έ ν•΄λ‹Ή ν΄λΌμ΄μ–ΈνŠΈμ˜ 데이터λ₯Ό μ‚¬μš©μžκ°€ 일방적으둜 λ³΄λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰ν–ˆλ‹€.

즉, μ„œλ²„κ°€ λ‚΄λ €μ€€ 데이터에 λŒ€ν•΄ μ˜μ‹¬μ΄ 없을 것이닀. same - origin 이기 λ•Œλ¬Έμ— ꡳ이 μ„œλ²„λŠ” μš”μ²­μ„ 막을 ν•„μš”κ°€ μ—†μ—ˆλ‹€.

2. μ˜€λŠ˜λ‚ 

SPA λΌλŠ” κ³ λ„ν™”λœ μ›Ή 기술이 λ“±μž₯ν•˜μ˜€κ³  이제 각각의 μœ μ € (ν΄λΌμ΄μ–ΈνŠΈ) μ—μ„œ μ—¬λŸ¬ 곳에 μžˆλŠ” λ¦¬μ†ŒμŠ€λ₯Ό ν™œμš©ν•  ν•„μš”κ°€ 생겼닀.

우리 μ„œλ²„μ—λ§Œ μš”μ²­ν•˜λŠ” 게 μ•„λ‹ˆλΌ λ‚΄κ°€ λ§Œλ“  μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ—μ„œ μœ νŠœλΈŒλ‚˜ κΉƒν—ˆλΈŒ 같은 λ‹€λ₯Έ μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€λ₯Ό μš”μ²­ν•˜κ²Œ λ˜λŠ” κ²½μš°κ°€ 많이 μƒκΈ°κ²Œ λ˜μ—ˆλ‹€.

μ΄μ œλŠ” 즉 same origin 이 μ•„λ‹ˆλΌ cross origin μš”μ²­μ„ ν•΄μ•Ό ν•œλ‹€.

πŸš€Cross Origin Resource Sharing (CORS)

Cross origin μ—μ„œ λ¦¬μ†ŒμŠ€ (μ„œλ²„μžμ›) λ₯Ό μš”μ²­ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

μœ νŠΈλΈŒμ—μ„œ κΉƒν—™μœΌλ‘œ, κΉƒν—™μ—μ„œ 유튜브 둜 즉, λ‹€λ₯Έ μ„œλ²„μ˜ μžμ›μ„ μš”μ²­ν•΄μ„œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν•œ κ°œλ….

BUT λΈŒλΌμš°μ €μ—μ„œ 크둜슀 도메인 μš”μ²­μ€ κΈ°λ³Έμ μœΌλ‘œλŠ” μ œν•œλ˜μ–΄ μžˆλ‹€.

μ™œ? λ³΄μ•ˆμƒμ˜ 이유둜. μ–΄λ–€ μš”μ²­μ„ 생성할지 μ•Œμˆ˜ μ—†κΈ° λ•Œλ¬Έμ—..

κ°œλ°œμžλ“€μ΄ μš”μ²­μ„ ν–ˆμŒ μ’€ ν’€μ–΄μ€˜ γ… γ…  μš”μ²­ν•΄μ„œ 이제 μ„œλ²„κ°€ Allow ν•œ λ²”μœ„λ‚΄μ—μ„œ Cross origin μš”μ²­ ν—ˆμš©μ΄ κ°€λŠ₯ν•΄ μ‘Œλ‹€.

πŸš€CORS λŠ” μ–΄λ–¨λ•Œ λ°œλ™λ˜λ‚˜?

cors

μ €λ²ˆμ— μž‘μ„±ν•œ λ‚΄ λΈ”λ‘œκ·Έ 글을 μ½μ–΄λ³΄μž.

https://dev-seolleung2.netlify.app/development/CORS/

POST μš”μ²­μ„ 날릴 λ•Œ, κ·Έ 전에 OPTIONS λ©”μ†Œλ“œκ°€ λ°œλ™! preflight request λ₯Ό ν†΅ν•œ ν—ˆκ°€λ₯Ό λ°›μŒ. OPTIONS 에 λŒ€ν•œ 정상 응닡을 λ°›μŒ.

이후 POST μš”μ²­ ν—ˆμš©, 응닡 진행.

https://developer.mozilla.org/ko/docs/Web/HTTP/CORS

πŸš€CORS 헀더에 λ‹΄λŠ” λ‚΄μš©

const defaultCorsHeader = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
  'Access-Control-Allow-Headers': 'Content-Type, Accept',
  'Access-Control-Max-Age': 10,
}

λͺ¨λ“  도메인을 ν—ˆμš©ν•œλ‹€ (μ™€μΌλ“œμΉ΄λ“œ), λ©”μ†Œλ“œλŠ” μ €κΈ° λͺ…κΈ°λœ μ• λ“€λ§Œ ν—ˆμš©ν•œλ‹€, ν—€λ”μ—λŠ” content-type κ³Ό accept 만 μ“Έ 수 μžˆλ‹€.

preflight request λŠ” 10초 κΉŒμ§€ ν—ˆμš©λœλ‹€. λΌλŠ” μ˜λ―Έμ΄λ‹€.


Written by@[DotoriMook]
ν”„λ‘ νŠΈμ—”λ“œ μ£Όλ‹ˆμ–΄ 개발자 λ„ν† λ¦¬λ¬΅μ˜ 기술개발 λΈ”λ‘œκ·Έ μž…λ‹ˆλ‹€.

GitHubMediumTwitterFacebook