--- /dev/null
+# κ΅μ°¨ μΆμ² 리μμ€ κ³΅μ
+
+<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">CORS λλ "κ΅μ°¨-μΆμ² 리μμ€ κ³΅μ "</a>λ, λΈλΌμ°μ μμ λμνλ νλ‘ νΈμλκ° μλ°μ€ν¬λ¦½νΈλ‘ μ½λλ‘ λ°±μλμ ν΅μ νκ³ , λ°±μλλ ν΄λΉ νλ‘ νΈμλμ λ€λ₯Έ "μΆμ²"μ μ‘΄μ¬νλ μν©μ μλ―Έν©λλ€.
+
+## μΆμ²
+
+μΆμ²λ νλ‘ν μ½(`http` , `https`), λλ©μΈ(`myapp.com`, `localhost`, `localhost.tiangolo.com` ), κ·Έλ¦¬κ³ ν¬νΈ(`80`, `443`, `8080` )μ μ‘°ν©μ μλ―Έν©λλ€.
+
+λ°λΌμ, μλλ λͺ¨λ μμ΄ν μΆμ²μ
λλ€:
+
+* `http://localhost`
+* `https://localhost`
+* `http://localhost:8080`
+
+λͺ¨λ `localhost` μ μμ§λ§, μλ‘ λ€λ₯Έ νλ‘ν μ½κ³Ό ν¬νΈλ₯Ό μ¬μ©νκ³ μμΌλ―λ‘ λ€λ₯Έ "μΆμ²"μ
λλ€.
+
+## λ¨κ³
+
+λΈλΌμ°μ λ΄ `http://localhost:8080`μμ λμνλ νλ‘ νΈμλκ° μκ³ , μλ°μ€ν¬λ¦½νΈλ `http://localhost`λ₯Ό ν΅ν΄ λ°±μλμ ν΅μ νλ€κ³ κ°μ ν΄λ΄
μλ€(ν¬νΈλ₯Ό λͺ
μνμ§ μλ κ²½μ°, λΈλΌμ°μ λ `80` μ κΈ°λ³Έ ν¬νΈλ‘ κ°μ£Όν©λλ€).
+
+κ·Έλ¬λ©΄ λΈλΌμ°μ λ λ°±μλμ HTTP `OPTIONS` μμ²μ 보λ΄κ³ , λ°±μλμμ μ΄ λ€λ₯Έ μΆμ²(`http://localhost:8080`)μμ ν΅μ μ νκ°νλ μ μ ν ν€λλ₯Ό 보λ΄λ©΄, λΈλΌμ°μ λ νλ‘ νΈμλμ μλ°μ€ν¬λ¦½νΈκ° λ°±μλμ μμ²μ λ³΄λΌ μ μλλ‘ ν©λλ€.
+
+μ΄λ₯Ό μν΄, λ°±μλλ "νμ©λ μΆμ²(allowed origins)" λͺ©λ‘μ κ°μ§κ³ μμ΄μΌλ§ ν©λλ€.
+
+μ΄ κ²½μ°, νλ‘ νΈμλκ° μ λλ‘ λμνκΈ° μν΄ `http://localhost:8080`μ λͺ©λ‘μ ν¬ν¨ν΄μΌ ν©λλ€.
+
+## μμΌλμΉ΄λ
+
+λͺ¨λ μΆμ²λ₯Ό νμ©νκΈ° μν΄ λͺ©λ‘μ `"*"` ("μμΌλμΉ΄λ")λ‘ μ μΈνλ κ²λ κ°λ₯ν©λλ€.
+
+νμ§λ§ μ΄κ²μ νΉμ ν μ νμ ν΅μ λ§μ νμ©νλ©°, μΏ ν€ λ° μ‘μΈμ€ ν ν°κ³Ό μ¬μ©λλ μΈμ¦ ν€λ(Authoriztion header) λ±μ΄ ν¬ν¨λ κ²½μ°μ κ°μ΄ μ격 μ¦λͺ
(credentials)μ΄ ν¬ν¨λ ν΅μ μ νμ©λμ§ μμ΅λλ€.
+
+λ°λΌμ λͺ¨λ μμ
μ μλνλλ‘ μ€ννκΈ° μν΄, νμ©λλ μΆμ²λ₯Ό λͺ
μμ μΌλ‘ μ§μ νλ κ²μ΄ μ’μ΅λλ€.
+
+## `CORSMiddleware` μ¬μ©
+
+`CORSMiddleware` μ μ¬μ©νμ¬ **FastAPI** μμ© νλ‘κ·Έλ¨μ κ΅μ°¨ μΆμ² 리μμ€ κ³΅μ νκ²½μ μ€μ ν μ μμ΅λλ€.
+
+* `CORSMiddleware` μν¬νΈ.
+* νμ©λλ μΆμ²(λ¬Έμμ΄ νμ)μ 리μ€νΈ μμ±.
+* FastAPI μμ© νλ‘κ·Έλ¨μ "λ―Έλ€μ¨μ΄(middleware)"λ‘ μΆκ°.
+
+λ°±μλμμ λ€μμ μ¬νμ νμ©ν μ§μ λν΄ μ€μ ν μλ μμ΅λλ€:
+
+* μ격μ¦λͺ
(μΈμ¦ ν€λ, μΏ ν€ λ±).
+* νΉμ ν HTTP λ©μλ(`POST`, `PUT`) λλ μμΌλμΉ΄λ `"*"` λ₯Ό μ¬μ©ν λͺ¨λ HTTP λ©μλ.
+* νΉμ ν HTTP ν€λ λλ μμΌλμΉ΄λ `"*"` λ₯Ό μ¬μ©ν λͺ¨λ HTTP ν€λ.
+
+```Python hl_lines="2 6-11 13-19"
+{!../../../docs_src/cors/tutorial001.py!}
+```
+
+`CORSMiddleware` μμ μ¬μ©νλ κΈ°λ³Έ λ§€κ°λ³μλ μ νμ μ΄λ―λ‘, λΈλΌμ°μ κ° κ΅μ°¨-λλ©μΈ μν©μμ νΉμ ν μΆμ², λ©μλ, ν€λ λ±μ μ¬μ©ν μ μλλ‘ νλ €λ©΄ μ΄λ€μ λͺ
μμ μΌλ‘ νμ©ν΄μΌ ν©λλ€.
+
+λ€μμ μΈμλ€μ΄ μ§μλ©λλ€:
+
+* `allow_origins` - κ΅μ°¨-μΆμ² μμ²μ λ³΄λΌ μ μλ μΆμ²μ 리μ€νΈμ
λλ€. μ) `['https://example.org', 'https://www.example.org']`. λͺ¨λ μΆμ²λ₯Ό νμ©νκΈ° μν΄ `['*']` λ₯Ό μ¬μ©ν μ μμ΅λλ€.
+* `allow_origin_regex` - κ΅μ°¨-μΆμ² μμ²μ λ³΄λΌ μ μλ μΆμ²λ₯Ό μ κ·ννμ λ¬Έμμ΄λ‘ λνλ
λλ€. `'https://.*\.example\.org'`.
+* `allow_methods` - κ΅μ°¨-μΆμ² μμ²μ νμ©νλ HTTP λ©μλμ 리μ€νΈμ
λλ€. κΈ°λ³Έκ°μ `['GET']` μ
λλ€. `['*']` μ μ¬μ©νμ¬ λͺ¨λ νμ€ λ©μλλ€μ νμ©ν μ μμ΅λλ€.
+* `allow_headers` - κ΅μ°¨-μΆμ²λ₯Ό μ§μνλ HTTP μμ² ν€λμ 리μ€νΈμ
λλ€. κΈ°λ³Έκ°μ `[]` μ
λλ€. λͺ¨λ ν€λλ€μ νμ©νκΈ° μν΄ `['*']` λ₯Ό μ¬μ©ν μ μμ΅λλ€. `Accept`, `Accept-Language`, `Content-Language` κ·Έλ¦¬κ³ `Content-Type` ν€λλ CORS μμ²μ μΈμ λ νμ©λ©λλ€.
+* `allow_credentials` - κ΅μ°¨-μΆμ² μμ²μ μΏ ν€ μ§μ μ¬λΆλ₯Ό μ€μ ν©λλ€. κΈ°λ³Έκ°μ `False` μ
λλ€. λν ν΄λΉ νλͺ©μ νμ©ν κ²½μ° `allow_origins` λ `['*']` λ‘ μ€μ ν μ μμΌλ©°, μΆμ²λ₯Ό λ°λμ νΉμ ν΄μΌ ν©λλ€.
+* `expose_headers` - λΈλΌμ°μ μ μ κ·Όν μ μμ΄μΌ νλ λͺ¨λ μλ΅ ν€λλ₯Ό κ°λ¦¬ν΅λλ€. κΈ°λ³Έκ°μ `[]` μ
λλ€.
+* `max_age` - λΈλΌμ°μ κ° CORS μλ΅μ μΊμμ μ μ₯νλ μ΅λ μκ°μ μ΄ λ¨μλ‘ μ€μ ν©λλ€. κΈ°λ³Έκ°μ `600` μ
λλ€.
+
+λ―Έλ€μ¨μ΄λ λκ°μ§ νΉμ ν μ’
λ₯μ HTTP μμ²μ μλ΅ν©λλ€...
+
+### CORS μ¬μ μμ²
+
+`Origin` λ° `Access-Control-Request-Method` ν€λμ ν¨κ» μ μ‘νλ λͺ¨λ `OPTIONS` μμ²μ
λλ€.
+
+μ΄ κ²½μ° λ―Έλ€μ¨μ΄λ λ€μ΄μ€λ μμ²μ κ°λ‘μ± μ μ ν CORS ν€λμ, μ 보 μ 곡μ μν `200` λλ `400` μλ΅μΌλ‘ μλ΅ν©λλ€.
+
+### λ¨μν μμ²
+
+`Origin` ν€λλ₯Ό κ°μ§ λͺ¨λ μμ². μ΄ κ²½μ° λ―Έλ€μ¨μ΄λ μμ²μ μ μμ μΌλ‘ μ λ¬νμ§λ§, μ μ ν CORS ν€λλ₯Ό μλ΅μ ν¬ν¨μν΅λλ€.
+
+## λ λ§μ μ 보
+
+<abbr title="κ΅μ°¨-μΆμ² 리μμ€ κ³΅μ ">CORS</abbr>μ λν λ λ§μ μ 보λ₯Ό μκ³ μΆλ€λ©΄, <a href="https://developer.mozilla.org/ko/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS λ¬Έμ</a>λ₯Ό μ°Έκ³ νκΈ° λ°λλλ€.
+
+!!! note "κΈ°μ μ μΈλΆ μ¬ν"
+ `from starlette.middleware.cors import CORSMiddleware` μμ μ¬μ©ν μ μμ΅λλ€.
+
+ **FastAPI**λ κ°λ°μμΈ λΉμ μ νΈμλ₯Ό μν΄ `fastapi.middleware` μμ λͺκ°μ§μ λ―Έλ€μ¨μ΄λ₯Ό μ 곡ν©λλ€. νμ§λ§ λλΆλΆμ λ―Έλ€μ¨μ΄κ° StraletteμΌλ‘λΆν° μ§μ μ 곡λ©λλ€.