# โ (โ๏ธ-๐จ๐ณ โน ๐ค)
โ โ๏ธ "โ๏ธ-๐จ๐ณ โน ๐ค" ๐ โ ๐โ ๐ธ ๐โโ ๐ฅ โ๏ธ ๐ธ ๐ ๐ ๐ โฎ๏ธ ๐ฉโ๐ป, & ๐ฉโ๐ป ๐ "๐จ๐ณ" ๐ ๐ธ.
## ๐จ๐ณ
๐จ๐ณ ๐ ๐ ๏ธ (`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`).
โคด๏ธ, ๐ฅ ๐ ๐จ ๐บ๐ธ๐ `OPTIONS` ๐จ ๐ฉโ๐ป, & ๐ฅ ๐ฉโ๐ป ๐จ โ ๐ โ ๐ป โช๏ธโก๏ธ ๐ ๐ ๐จ๐ณ (`http://localhost:8080`) โคด๏ธ ๐ฅ ๐ โก๏ธ ๐ธ ๐ธ ๐จ ๐ฎ ๐จ ๐ฉโ๐ป.
๐ ๐, ๐ฉโ๐ป ๐ โ๏ธ ๐ "โ ๐จ๐ณ".
๐ ๐ผ, โซ๏ธ ๐ โ๏ธ ๐ `http://localhost:8080` ๐ธ ๐ท โ.
## ๐
โซ๏ธ ๐ช ๐ฃ ๐ `"*"` ("๐") ๐ฌ ๐ ๐ โ.
โ๏ธ ๐ ๐ ๐ด โ ๐ฏ ๐ ๐ป, ๐ซ ๐ ๐ ๐ ๐: ๐ช, โ ๐ ๐ ๐ โ๏ธ โฎ๏ธ ๐จ ๐ค, โ๏ธ.
, ๐ ๐ท โ, โซ๏ธ ๐ป โ ๐ฏ โ ๐จ๐ณ.
## โ๏ธ `CORSMiddleware`
๐ ๐ช ๐ โซ๏ธ ๐ **FastAPI** ๐ธ โ๏ธ `CORSMiddleware`.
* ๐ `CORSMiddleware`.
* โ ๐ โ ๐จ๐ณ (๐ป).
* ๐ฎ โซ๏ธ "๐ ๏ธ" ๐ **FastAPI** ๐ธ.
๐ ๐ช โ ๐ฅ ๐ ๐ฉโ๐ป โ:
* ๐ (โ ๐, ๐ช, โ๏ธ).
* ๐ฏ ๐บ๐ธ๐ ๐ฉโ๐ฌ (`POST`, `PUT`) โ๏ธ ๐ ๐ซ โฎ๏ธ ๐ `"*"`.
* ๐ฏ ๐บ๐ธ๐ ๐ โ๏ธ ๐ ๐ซ โฎ๏ธ ๐ `"*"`.
```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` - ๐ ๐บ๐ธ๐ ๐ฉโ๐ฌ ๐ ๐ โ โ๏ธ-๐จ๐ณ ๐จ. ๐ข `['GET']`. ๐ ๐ช โ๏ธ `['*']` โ ๐ ๐ฉ ๐ฉโ๐ฌ.
* `allow_headers` - ๐ ๐บ๐ธ๐ ๐จ ๐ ๐ ๐ ๐โ๐ฆบ โ๏ธ-๐จ๐ณ ๐จ. ๐ข `[]`. ๐ ๐ช โ๏ธ `['*']` โ ๐ ๐. `Accept`, `Accept-Language`, `Content-Language` & `Content-Type` ๐ ๐ง โ ๐
โ ๐จ.
* `allow_credentials` - ๐ฆ ๐ ๐ช ๐ ๐โ๐ฆบ โ๏ธ-๐จ๐ณ ๐จ. ๐ข `False`. , `allow_origins` ๐ซ๐ โ `['*']` ๐ โ, ๐จ๐ณ ๐ โ.
* `expose_headers` - ๐ฆ ๐ ๐จ ๐ ๐ ๐ โ โฟ ๐ฅ. ๐ข `[]`.
* `max_age` - โ ๐ ๐ฐ ๐ฅ ๐ฅ ๐พ โ ๐จ. ๐ข `600`.
๐ ๏ธ ๐จ 2๏ธโฃ ๐ฏ ๐ ๐บ๐ธ๐ ๐จ...
### โ ๐ซ ๐จ
๐ ๐ `OPTIONS` ๐จ โฎ๏ธ `Origin` & `Access-Control-Request-Method` ๐.
๐ ๐ผ ๐ ๏ธ ๐ ๐ ๐จ ๐จ & ๐จ โฎ๏ธ โ โ ๐, & ๐ฏโโ๏ธ `200` โ๏ธ `400` ๐จ ๐ ๐ฏ.
### ๐
๐จ
๐ ๐จ โฎ๏ธ `Origin` ๐. ๐ ๐ผ ๐ ๏ธ ๐ ๐ถโโ๏ธ ๐จ ๐ ๐, โ๏ธ ๐ ๐ โ โ ๐ ๐ ๐จ.
## ๐
โน
๐ โน ๐ โ, โ
๐ฆ โ ๐งพ.
/// note | "๐ก โน"
๐ ๐ช โ๏ธ `from starlette.middleware.cors import CORSMiddleware`.
**FastAPI** ๐ ๐ ๐ ๏ธ `fastapi.middleware` ๐ช ๐, ๐ฉโ๐ป. โ๏ธ ๐
๐ช ๐ ๏ธ ๐ ๐ โช๏ธโก๏ธ ๐.
///