forked from tiangolo/fastapi
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
π Add Korean translation for
docs/tutorial/cors.md
(tiangolo#3764)
Co-authored-by: weekwith.me <63915557+0417taehyun@users.noreply.github.com> Co-authored-by: SebastiΓ‘n RamΓrez <tiangolo@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- Loading branch information
Showing
2 changed files
with
85 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
# κ΅μ°¨ μΆμ² 리μμ€ κ³΅μ | ||
|
||
<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μΌλ‘λΆν° μ§μ μ 곡λ©λλ€. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters