跨域资源共享(CORS)是一种标准机制,允许一个域上的web应用(通常是JavaScript发起的请求)访问另一个域上的资源。以下是如何在服务器端设置CORS的一般步骤和常见配置选项:
服务器端需要在HTTP响应头中添加Access-Control-Allow-Origin字段来表明哪些源(origin)可以访问资源。例如,在Apache、Nginx、Node.js、Java Servlet容器(如Tomcat)、Python Flask框架等中,可以通过配置或者编程方式设置响应头:
1Access-Control-Allow-Origin: *上面的配置表示允许任何源进行跨域访问。如果要限制特定源,则应替换为具体的源地址,例如:
1Access-Control-Allow-Origin: https://example.com除了Access-Control-Allow-Origin外,还有其他相关的响应头可能需要配置,包括但不限于:
Access-Control-Allow-Methods: 允许的HTTP方法列表,如 GET, POST, PUT, DELETE 等。
1Access-Control-Allow-Methods: GET, POST, OPTIONSAccess-Control-Allow-Headers: 允许客户端发送的自定义请求头,例如 Authorization、Content-Type 等。
1Access-Control-Allow-Headers: Content-Type, AuthorizationAccess-Control-Allow-Credentials: 如果设为true,表示允许携带凭据(cookies和HTTP认证信息)进行跨域请求。
1Access-Control-Allow-Credentials: trueAccess-Control-Max-Age: 预检请求的结果(OPTIONS方法)的有效期,单位为秒,可以减少不必要的重复预检请求。
1Access-Control-Max-Age: 3600对于非简单请求(比如带有自定义请求头或非标准HTTP方法的请求),浏览器会先发送一个OPTIONS预检请求,服务器需要相应这个请求并返回合适的响应头,确认允许实际的请求发生。
cors模块。flask-cors轻松配置。CorsConfiguration或使用注解@CrossOrigin。举例来说,在FastAPI(Python)中使用FastAPI+CORS的方式设置:
1from fastapi import FastAPI
2from fastapi.middleware.cors import CORSMiddleware
3
4app = FastAPI()
5
6app.add_middleware(
7 CORSMiddleware,
8 allow_origins=["*"], # 替换为实际允许的源地址9 allow_credentials=True,
10 allow_methods=["*"],
11 allow_headers=["*"],
12)根据实际需求和安全策略调整上述配置,确保既满足功能需求又符合安全标准。
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu