--- /dev/null
+# CORS (ΠΠ±ΠΌΡΠ½ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΌΡΠΆ ΡΡΠ·Π½ΠΈΠΌΠΈ Π΄ΠΆΠ΅ΡΠ΅Π»Π°ΠΌΠΈ)
+
+<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">CORS Π°Π±ΠΎ "ΠΠ±ΠΌΡΠ½ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ ΠΌΡΠΆ ΡΡΠ·Π½ΠΈΠΌΠΈ Π΄ΠΆΠ΅ΡΠ΅Π»Π°ΠΌΠΈ"</a> Ρ ΡΠΈΡΡΠ°ΡΡΡ, ΠΊΠΎΠ»ΠΈ ΡΡΠΎΠ½ΡΠ΅Π½Π΄, ΡΠΎ ΠΏΡΠ°ΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΡ, ΠΌΡΡΡΠΈΡΡ JavaScript-ΠΊΠΎΠ΄, ΡΠΊΠΈΠΉ Π²Π·Π°ΡΠΌΠΎΠ΄ΡΡ Π· Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠΌ, ΡΠΎΠ·ΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠΌ Π² ΡΠ½ΡΠΎΠΌΡ "Π΄ΠΆΠ΅ΡΠ΅Π»Ρ" (origin).
+
+## ΠΠΆΠ΅ΡΠ΅Π»ΠΎ (Origin)
+
+ΠΠΆΠ΅ΡΠ΅Π»ΠΎ Π²ΠΈΠ·Π½Π°ΡΠ°ΡΡΡΡΡ ΠΊΠΎΠΌΠ±ΡΠ½Π°ΡΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ (`http`, `https`), Π΄ΠΎΠΌΠ΅Π½Ρ (`myapp.com`, `localhost`, `localhost.tiangolo.com`), ΠΏΠΎΡΡΡ (`80`, `443`, `8080`).
+
+
+ΠΠ°ΠΏΡΠΈΠΊΠ»Π°Π΄, ΡΠ°ΠΊΡ Π°Π΄ΡΠ΅ΡΠΈ Π²Π²Π°ΠΆΠ°ΡΡΡΡΡ ΡΡΠ·Π½ΠΈΠΌΠΈ Π΄ΠΆΠ΅ΡΠ΅Π»Π°ΠΌΠΈ:
+
+* `http://localhost`
+* `https://localhost`
+* `http://localhost:8080`
+
+ΠΠ°Π²ΡΡΡ ΡΠΊΡΠΎ Π²ΠΎΠ½ΠΈ Π²ΡΡ ΠΌΡΡΡΡΡΡ `localhost`, Π²ΠΎΠ½ΠΈ ΠΌΠ°ΡΡΡ ΡΡΠ·Π½Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ Π°Π±ΠΎ ΠΏΠΎΡΡΠΈ, ΡΠΎ ΡΠΎΠ±ΠΈΡΡ ΡΡ
ΠΎΠΊΡΠ΅ΠΌΠΈΠΌΠΈ "Π΄ΠΆΠ΅ΡΠ΅Π»Π°ΠΌΠΈ".
+
+## ΠΡΠΎΠΊΠΈ
+
+ΠΡΠΈΠΏΡΡΡΠΈΠΌΠΎ, ΡΠΎ ΠΠ°Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΠΏΡΠ°ΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΡ Π½Π° `http://localhost:8080`, Π° ΠΉΠΎΠ³ΠΎ JavaScript Π½Π°ΠΌΠ°Π³Π°ΡΡΡΡΡ Π²ΡΠ΄ΠΏΡΠ°Π²ΠΈΡΠΈ Π·Π°ΠΏΠΈΡ Π΄ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄Ρ, ΡΠΊΠΈΠΉ ΠΏΡΠ°ΡΡΡ Π½Π° `http://localhost` (ΠΡΠΊΡΠ»ΡΠΊΠΈ ΠΌΠΈ Π½Π΅ Π²ΠΊΠ°Π·ΡΡΠΌΠΎ ΠΏΠΎΡΡ, Π±ΡΠ°ΡΠ·Π΅Ρ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ ΠΏΡΠΈΠΏΡΡΠΊΠ°Ρ ΠΏΠΎΡΡ `80`).
+
+ΠΠΎΡΡΠΌ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π°Π΄ΡΡΠ»Π΅ HTTP-Π·Π°ΠΏΠΈΡ `OPTIONS` Π΄ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄Ρ Π½Π° ΠΏΠΎΡΡΡ `:80`, Ρ ΡΠΊΡΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π°Π΄ΡΡΠ»Π΅ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π½Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΡΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡΡΡ ΠΊΠΎΠΌΡΠ½ΡΠΊΠ°ΡΡΡ Π· ΡΡΠΎΠ³ΠΎ ΡΠ½ΡΠΎΠ³ΠΎ Π΄ΠΆΠ΅ΡΠ΅Π»Π° (`http://localhost:8080`), ΡΠΎΠ΄Ρ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π° ΠΏΠΎΡΡΡ `:8080` Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ JavaScript Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Ρ Π½Π°Π΄ΡΡΠ»Π°ΡΠΈ ΡΠ²ΡΠΉ Π·Π°ΠΏΠΈΡ Π΄ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄Ρ Π½Π° ΠΏΠΎΡΡΡ `:80`.
+
+Π©ΠΎΠ± Π΄ΠΎΡΡΠ³ΡΠΈ ΡΡΠΎΠ³ΠΎ, Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π° ΠΏΠΎΡΡΡ `:80` ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΠΌΠ°ΡΠΈ ΡΠΏΠΈΡΠΎΠΊ "Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈΡ
Π΄ΠΆΠ΅ΡΠ΅Π»".
+
+Π£ ΡΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ°Ρ ΠΌΡΡΡΠΈΡΠΈ `http://localhost:8080`, ΡΠΎΠ± ΡΡΠΎΠ½ΡΠ΅Π½Π΄ Π½Π° ΠΏΠΎΡΡΡ `:8080` ΠΏΡΠ°ΡΡΠ²Π°Π² ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎ.
+
+## Π‘ΠΈΠΌΠ²ΠΎΠ»ΡΠ½Π΅ ΠΏΡΠ΄ΡΡΠ°Π²Π»ΡΠ½Π½Ρ
+
+ΠΠΎΠΆΠ½Π° ΡΠ°ΠΊΠΎΠΆ ΠΎΠ³ΠΎΠ»ΠΎΡΠΈΡΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΠΊ `"*"` ("ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½Π΅ ΠΏΡΠ΄ΡΡΠ°Π²Π»ΡΠ½Π½Ρ"), ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Ρ Π΄ΠΎΠ·Π²ΡΠ» Π΄Π»Ρ Π²ΡΡΡ
Π΄ΠΆΠ΅ΡΠ΅Π».
+
+ΠΠ΄Π½Π°ΠΊ ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π»ΠΈΡΠ΅ ΠΏΠ΅Π²Π½Ρ ΡΠΈΠΏΠΈ ΠΊΠΎΠΌΡΠ½ΡΠΊΠ°ΡΡΡ, Π²ΠΈΠΊΠ»ΡΡΠ°ΡΡΠΈ Π²ΡΠ΅, ΡΠΎ ΠΏΠΎΠ²'ΡΠ·Π°Π½Π΅ Π· ΠΎΠ±Π»ΡΠΊΠΎΠ²ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ: Cookies, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΡΡ, ΡΠ°ΠΊΡ ΡΠΊ ΡΡ, ΡΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΡΡΡ Π· Bearer ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΡΠΎΡΠΎ.
+
+Π’ΠΎΠΌΡ Π΄Π»Ρ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡ ΡΠΎΠ±ΠΎΡΠΈ ΠΊΡΠ°ΡΠ΅ ΡΠ²Π½ΠΎ Π²ΠΊΠ°Π·ΡΠ²Π°ΡΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Ρ Π΄ΠΆΠ΅ΡΠ΅Π»Π°.
+
+## ΠΠΈΠΊΠΎΡΠΈΡΡΠ°Π½Π½Ρ `CORSMiddleware`
+
+ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π»Π°ΡΡΡΠ²Π°ΡΠΈ ΡΠ΅ Ρ ΠΠ°ΡΠΎΠΌΡ Π΄ΠΎΠ΄Π°ΡΠΊΡ **FastAPI** Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ `CORSMiddleware`.
+
+* ΠΠΌΠΏΠΎΡΡΡΠΉΡΠ΅ `CORSMiddleware`.
+* Π‘ΡΠ²ΠΎΡΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈΡ
Π΄ΠΆΠ΅ΡΠ΅Π» (Ρ Π²ΠΈΠ³Π»ΡΠ΄Ρ ΡΡΠ΄ΠΊΡΠ²).
+* ΠΠΎΠ΄Π°ΠΉΡΠ΅ ΠΉΠΎΠ³ΠΎ ΡΠΊ "middleware" Ρ ΠΠ°Ρ Π΄ΠΎΠ΄Π°ΡΠΎΠΊ **FastAPI**.
+
+
+Π’Π°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ½Π° Π²ΠΊΠ°Π·Π°ΡΠΈ, ΡΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΠ°Ρ Π±Π΅ΠΊΠ΅Π½Π΄:
+
+* ΠΠ±Π»ΡΠΊΠΎΠ²Ρ Π΄Π°Π½Ρ (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΡΡ, Ρookies, ΡΠΎΡΠΎ).
+* ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½Ρ HTTP-ΠΌΠ΅ΡΠΎΠ΄ΠΈ (`POST`, `PUT`) Π°Π±ΠΎ Π²ΡΡ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ `"*"`
+* ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½Ρ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π°Π±ΠΎ Π²ΡΡ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ `"*"`.
+
+
+{* ../../docs_src/cors/tutorial001.py hl[2,6:11,13:19] *}
+
+ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ Ρ `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` Π·Π°Π²ΠΆΠ΄ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Ρ Π΄Π»Ρ <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests" class="external-link" rel="noopener" target="_blank">ΠΏΡΠΎΡΡΠΈΡ
CORS-Π·Π°ΠΏΠΈΡΡΠ²</a>.
+* `allow_credentials` - ΠΠΈΠ·Π½Π°ΡΠ°Ρ, ΡΠΈ ΠΏΡΠ΄ΡΡΠΈΠΌΡΡΡΡΡΡ ΡΠ°ΠΉΠ»ΠΈ cookie Π΄Π»Ρ ΠΌΡΠΆΠ΄ΠΎΠΌΠ΅Π½Π½ΠΈΡ
Π·Π°ΠΏΠΈΡΡΠ². ΠΠ° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ `False`. Π’Π°ΠΊΠΎΠΆ, ΡΠΊΡΠΎ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠΈ ΠΎΠ±ΠΌΡΠ½ ΠΎΠ±Π»ΡΠΊΠΎΠ²ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ (`allow_credentials = True`), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ `allow_origins` Π½Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡΡΠΈ Π²ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΡΠΊ `['*']`, Π½Π΅ΠΎΠ±Ρ
ΡΠ΄Π½ΠΎ Π²ΠΊΠ°Π·Π°ΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Ρ Π΄ΠΆΠ΅ΡΠ΅Π»Π°.
+* `expose_headers` - ΠΠΊΠ°Π·ΡΡ, ΡΠΊΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ Π±ΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠ° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ `[]`.
+* `max_age` - ΠΡΡΠ°Π½ΠΎΠ²Π»ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΈΠΉ ΡΠ°Ρ (Ρ ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
) Π΄Π»Ρ ΠΊΠ΅ΡΡΠ²Π°Π½Π½Ρ CORS-Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π΅ΠΉ Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
. ΠΠ° Π·Π°ΠΌΠΎΠ²ΡΡΠ²Π°Π½Π½ΡΠΌ `600`.
+
+Π¦Π΅ΠΉ middleware ΠΎΠ±ΡΠΎΠ±Π»ΡΡ Π΄Π²Π° ΡΠΈΠΏΠΈ HTTP-Π·Π°ΠΏΠΈΡΡΠ²...
+
+### ΠΠΎΠΏΠ΅ΡΠ΅Π΄Π½Ρ CORS-Π·Π°ΠΏΠΈΡΠΈ (preflight requests)
+
+Π¦Π΅ Π±ΡΠ΄Ρ-ΡΠΊΡ `OPTIONS` - Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎ ΠΌΡΡΡΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ `Origin` ΡΠ° `Access-Control-Request-Method`.
+
+Π£ ΡΠ°ΠΊΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ middleware ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠΏΠΈΡΡ Π²Ρ
ΡΠ΄Π½ΠΈΠΉ Π·Π°ΠΏΠΈΡ Ρ Π²ΡΠ΄ΠΏΠΎΠ²ΡΡΡΡ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π½ΠΈΠΌΠΈ CORS-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠ²Π΅ΡΡΠ°ΡΡΠΈ Π°Π±ΠΎ `200`, Π°Π±ΠΎ `400` Π΄Π»Ρ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΠΉΠ½ΠΈΡ
ΡΡΠ»Π΅ΠΉ.
+
+### ΠΡΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠΈ
+
+ΠΡΠ΄Ρ-ΡΠΊΡ Π·Π°ΠΏΠΈΡΠΈ ΡΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ `Origin`. Π£ ΡΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ middleware ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π·Π°ΠΏΠΈΡ ΡΠΊ Π·Π²ΠΈΡΠ°ΠΉΠ½ΠΈΠΉ, Π°Π»Π΅ Π΄ΠΎΠ΄Π°ΡΡΡ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π½Ρ CORS-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Ρ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ.
+
+## ΠΠΎΠ΄Π°ΡΠΊΠΎΠ²Π° ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ
+
+ΠΡΠ»ΡΡΠ΅ ΠΏΡΠΎ <abbr title="Cross-Origin Resource Sharing">CORS</abbr> ΠΌΠΎΠΆΠ½Π° Π΄ΡΠ·Π½Π°ΡΠΈΡΡ Π² <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΡΡ Mozilla</a>.
+
+/// note | Π’Π΅Ρ
Π½ΡΡΠ½Ρ Π΄Π΅ΡΠ°Π»Ρ
+
+Π’Π°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ½Π° Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ `from starlette.middleware.cors import CORSMiddleware`.
+
+**FastAPI** Π½Π°Π΄Π°Ρ ΠΊΡΠ»ΡΠΊΠ° middleware Ρ `fastapi.middleware` Π΄Π»Ρ Π·ΡΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ·ΡΠΎΠ±Π½ΠΈΠΊΡΠ². ΠΠ»Π΅ Π±ΡΠ»ΡΡΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡ
middleware ΠΏΠΎΡ
ΠΎΠ΄ΡΡΡ Π±Π΅Π·ΠΏΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΎ Π·Ρ Starlette.
+
+///