โ (โ๏ธ-๐จ๐ณ โน ๐ค)¶
โ โ๏ธ "โ๏ธ-๐จ๐ณ โน ๐ค" ๐ โ ๐โ ๐ธ ๐โโ ๐ฅ โ๏ธ ๐ธ ๐ ๐ ๐ โฎ๏ธ ๐ฉโ๐ป, & ๐ฉโ๐ป ๐ "๐จ๐ณ" ๐ ๐ธ.
๐จ๐ณ¶
๐จ๐ณ ๐ ๐ ๏ธ (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
) โ๏ธ ๐ ๐ซ โฎ๏ธ ๐"*"
. - ๐ฏ ๐บ๐ธ๐ ๐ โ๏ธ ๐ ๐ซ โฎ๏ธ ๐
"*"
.
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
๐ช ๐, ๐ฉโ๐ป. โ๏ธ ๐
๐ช ๐ ๏ธ ๐ ๐ โช๏ธโก๏ธ ๐.