]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/cors.md` page (#13519)
authorValentyn <valentin.druzhinin@gmail.com>
Fri, 30 May 2025 13:34:34 +0000 (16:34 +0300)
committerGitHub <noreply@github.com>
Fri, 30 May 2025 13:34:34 +0000 (15:34 +0200)
docs/uk/docs/tutorial/cors.md [new file with mode: 0644]

diff --git a/docs/uk/docs/tutorial/cors.md b/docs/uk/docs/tutorial/cors.md
new file mode 100644 (file)
index 0000000..95b204d
--- /dev/null
@@ -0,0 +1,89 @@
+# 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.
+
+///