FastAPI应用香港服务器CORS配置实战指南
现代Web开发中,Python的FastAPI框架因高效特性被广泛使用。当这类应用部署到香港服务器时,常遇到跨域资源共享(CORS,Cross-Origin Resource Sharing)问题——前端与后端域名不一致时,浏览器会出于安全限制跨域请求,这就需要通过CORS配置解除限制,确保应用正常运行。
理解CORS机制
CORS是浏览器提供的跨域访问控制机制,通过HTTP响应头告知浏览器哪些源(域名/协议/端口)有权限访问资源。例如前端运行在`http://example.com`,后端API部署于**香港服务器**的`http://hk-api.example.com:8000`,此时直接请求会被浏览器拦截。CORS配置的本质是在后端设置允许的源列表及请求规则,让浏览器放行合法跨域请求。
FastAPI的CORS代码实现
首先确保环境准备:需安装FastAPI框架及运行服务器uvicorn。在终端执行安装命令:
pip install fastapi uvicorn
创建基础FastAPI应用`main.py`,代码如下:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
接下来添加CORS中间件。FastAPI内置`CORSMiddleware`处理跨域,修改`main.py`:
from fastapi.middleware.cors import CORSMiddleware
# 配置允许的前端源列表(根据实际业务补充)
allowed_origins = [
"http://example.com",
"https://example.com",
"http://localhost:3000" # 本地开发常用端口
]
app.add_middleware(
CORSMiddleware,
allow_origins=allowed_origins, # 允许的源
allow_credentials=True, # 允许携带Cookie等凭证
allow_methods=["*"], # 允许所有HTTP方法(GET/POST等)
allow_headers=["*"] # 允许所有请求头
)
关键参数说明:`allow_origins`建议明确指定具体域名,生产环境避免使用`["*"]`全允许;`allow_methods`和`allow_headers`可根据业务需求缩小范围(如仅允许GET/POST),提升安全性。
**香港服务器**部署与运行
将代码上传至**香港服务器**后,使用uvicorn启动应用。终端执行:
uvicorn main:app --host 0.0.0.0 --port 8000
参数解释:`--host 0.0.0.0`表示监听所有网络接口,外部可通过服务器公网IP访问;`--port 8000`指定服务端口(需在服务器安全组开放该端口)。
为实现服务持久化,推荐用systemd管理进程。创建服务文件`/etc/systemd/system/fastapi.service`:
[Unit]
Description=FastAPI Application on HK Server
[Service]
User=ubuntu # 替换为服务器实际用户
WorkingDirectory=/opt/fastapi # 应用代码路径
ExecStart=uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always # 崩溃自动重启
[Install]
WantedBy=multi-user.target
执行`systemctl daemon-reload`重新加载配置,`systemctl start fastapi`启动服务,`systemctl enable fastapi`设置开机自启。
验证CORS配置效果
部署完成后,用前端代码测试跨域请求。在`http://example.com`页面添加如下JavaScript:
fetch('http://[**香港服务器**公网IP]:8000')
.then(res => res.json())
.then(data => console.log('请求成功:', data))
.catch(err => console.error('请求失败:', err));
若浏览器控制台输出`请求成功:{"Hello":"World"}`,说明CORS配置生效;若提示“CORS policy blocked”,需检查`allowed_origins`是否包含当前前端域名,或服务器端口是否正确开放。
通过上述步骤,开发者可在**香港服务器**上为FastAPI应用正确配置CORS,解决跨域访问问题,保障前后端交互流畅运行。实际部署时建议根据业务场景调整允许的源、方法和请求头,在功能可用性与系统安全性间取得平衡。