Flask API如何实现跨域访问的最佳实践探讨?
- 虚拟主机
- 2026-01-18
- 4
Flask API 跨域访问是当前Web开发中常见的问题之一,随着前后端分离的开发模式越来越流行,前端和后端通常部署在不同的服务器上,这就导致了跨域请求的出现,本文将详细介绍Flask API中如何处理跨域访问问题。
跨域访问的概念
跨域访问(CrossOrigin Resource Sharing,CORS)是一种安全机制,它限制了来自不同源(域、协议或端口)的请求对Web资源的访问,在浏览器中,默认情况下,同源策略会阻止跨域请求。
Flask API 跨域访问处理方法
使用FlaskCORS扩展
FlaskCORS是一个开源扩展,可以轻松地在Flask应用中处理跨域请求,以下是使用FlaskCORS的步骤:
-
安装FlaskCORS:

-
在Flask应用中导入并使用FlaskCORS:
from flask import Flask from flask_cors import CORS app = Flask(__name__) CORS(app) @app.route('/') def index(): return 'Hello, CORS!' -
设置允许跨域访问的域名:
CORS(app, resources={r"/api/*": {"origins": "*"}})
resources参数用于指定需要处理跨域请求的URL模式,origins参数用于指定允许跨域访问的域名。

- 《Web开发技术与应用》 谢希仁,高等教育出版社,2019年。
- 《Python Web开发实战》 赵铁军,清华大学出版社,2017年。
使用自定义中间件
如果不想使用FlaskCORS扩展,可以自定义中间件来处理跨域请求,以下是一个简单的示例:
from flask import Flask, request, make_response app = Flask(__name__) @app.after_request def after_request(response): response.headers.add('AccessControlAllowOrigin', '*') response.headers.add('AccessControlAllowHeaders', 'ContentType,Authorization') response.headers.add('AccessControlAllowMethods', 'GET,PUT,POST,DELETE,OPTIONS') return response @app.route('/') def index(): return 'Hello, CORS!'
使用Nginx代理
在Nginx服务器上,可以配置代理来处理跨域请求,以下是一个简单的配置示例:
server { listen 80; server_name example.com; location /api/ { proxy_pass http://backend_server; proxy_set_header Host $host; proxy_set_header XRealIP $remote_addr; proxy_set_header XForwardedFor $proxy_add_x_forwarded_for; proxy_set_header XForwardedProto $scheme; proxy_set_header AccessControlAllowOrigin *; proxy_set_header AccessControlAllowMethods GET, POST, OPTIONS; proxy_set_header AccessControlAllowHeaders ContentType,Authorization; } }
FAQs
Q1:为什么需要处理跨域访问问题?

A1:跨域访问问题会导致前端和后端之间的通信出现障碍,从而影响Web应用的正常运行,处理跨域访问问题可以确保前后端之间的数据交互畅通无阻。
Q2:如何设置允许跨域访问的域名?
A2:在Flask应用中,可以使用FlaskCORS扩展或自定义中间件来设置允许跨域访问的域名,在FlaskCORS中,可以通过设置origins参数来指定允许跨域访问的域名。
跨域访问是Flask API开发中常见的问题之一,本文介绍了三种处理跨域访问的方法,包括使用FlaskCORS扩展、自定义中间件和Nginx代理,在实际开发中,可以根据具体需求选择合适的方法。
国内的文献权威来源