โ (โ๏ธ-๐จ๐ณ โน ๐ค)¶
โ โ๏ธ "โ๏ธ-๐จ๐ณ โน ๐ค" ๐ โ ๐โ ๐ธ ๐โโ ๐ฅ โ๏ธ ๐ธ ๐ ๐ ๐ โฎ๏ธ ๐ฉโ๐ป, & ๐ฉโ๐ป ๐ "๐จ๐ณ" ๐ ๐ธ.
๐จ๐ณ¶
๐จ๐ณ ๐ ๐ ๏ธ (http, https), ๐ (myapp.com, localhost, localhost.tiangolo.com), & โด (80, 443, 8080).
, ๐ ๐ซ ๐ ๐จ๐ณ:
http://localhosthttps://localhosthttp://localhost:8080
๐ฅ ๐ซ ๐ localhost, ๐ซ โ๏ธ ๐ ๐ ๏ธ โ๏ธ โด,, ๐ซ ๐ "๐จ๐ณ".
๐¶
, โก๏ธ ๐ฌ ๐ โ๏ธ ๐ธ ๐ ๐ ๐ฅ http://localhost:8080, & ๐ฎ ๐ธ ๐ ๐ โฎ๏ธ ๐ฉโ๐ป ๐ http://localhost (โฉ๏ธ ๐ฅ ๐ซ โ โด, ๐ฅ ๐ ๐ค ๐ข โด 80).
โคด๏ธ, ๐ฅ ๐ ๐จ ๐บ๐ธ๐ OPTIONS ๐จ ๐ฉโ๐ป, & ๐ฅ ๐ฉโ๐ป ๐จ โ ๐ โ ๐ป โช๏ธโก๏ธ ๐ ๐ ๐จ๐ณ (http://localhost:8080) โคด๏ธ ๐ฅ ๐ โก๏ธ ๐ธ ๐ธ ๐จ ๐ฎ ๐จ ๐ฉโ๐ป.
๐ ๐, ๐ฉโ๐ป ๐ โ๏ธ ๐ "โ ๐จ๐ณ".
๐ ๐ผ, โซ๏ธ ๐ โ๏ธ ๐ http://localhost:8080 ๐ธ ๐ท โ.
๐¶
โซ๏ธ ๐ช ๐ฃ ๐ "*" ("๐") ๐ฌ ๐ ๐ โ.
โ๏ธ ๐ ๐ ๐ด โ ๐ฏ ๐ ๐ป, ๐ซ ๐ ๐ ๐ ๐: ๐ช, โ ๐ ๐ ๐ โ๏ธ โฎ๏ธ ๐จ ๐ค, โ๏ธ.
, ๐ ๐ท โ, โซ๏ธ ๐ป โ ๐ฏ โ ๐จ๐ณ.
โ๏ธ CORSMiddleware¶
๐ ๐ช ๐ โซ๏ธ ๐ FastAPI ๐ธ โ๏ธ CORSMiddleware.
- ๐
CORSMiddleware. - โ ๐ โ ๐จ๐ณ (๐ป).
- ๐ฎ โซ๏ธ "๐ ๏ธ" ๐ FastAPI ๐ธ.
๐ ๐ช โ ๐ฅ ๐ ๐ฉโ๐ป โ:
- ๐ (โ ๐, ๐ช, โ๏ธ).
- ๐ฏ ๐บ๐ธ๐ ๐ฉโ๐ฌ (
POST,PUT) โ๏ธ ๐ ๐ซ โฎ๏ธ ๐"*". - ๐ฏ ๐บ๐ธ๐ ๐ โ๏ธ ๐ ๐ซ โฎ๏ธ ๐
"*".
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
origins = [
"http://localhost.tiangolo.com",
"https://localhost.tiangolo.com",
"http://localhost",
"http://localhost:8080",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/")
async def main():
return {"message": "Hello World"}
๐ข ๐ข โ๏ธ 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 ๐. ๐ ๐ผ ๐ ๏ธ ๐ ๐ถโโ๏ธ ๐จ ๐ ๐, โ๏ธ ๐ ๐ โ โ ๐ ๐ ๐จ.
๐ โน¶
๐ โน ๐ โ, โ ๐ฆ โ ๐งพ.
๐ก โน
๐ ๐ช โ๏ธ from starlette.middleware.cors import CORSMiddleware.
FastAPI ๐ ๐ ๐ ๏ธ fastapi.middleware ๐ช ๐, ๐ฉโ๐ป. โ๏ธ ๐
๐ช ๐ ๏ธ ๐ ๐ โช๏ธโก๏ธ ๐.