跨域资源共享(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, OPTIONS
Access-Control-Allow-Headers
: 允许客户端发送的自定义请求头,例如 Authorization
、Content-Type
等。
1Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Credentials
: 如果设为true
,表示允许携带凭据(cookies和HTTP认证信息)进行跨域请求。
1Access-Control-Allow-Credentials: true
Access-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