CORS¶
Cross Origin Resource Sharing (CORS)是现代浏览器执行的附加安全检查,以防止不同域之间的未授权请求。
在开发Web API时,通常还会实现CORS策略。因此,Falcon提供了一种启用简单CORS策略的简单方法,即通过传递给 falcon.App
或 falcon.asgi.App
。
默认情况下,Falcon的内置CORS支持被禁用,因此浏览器将阻止任何跨源请求。经过 cors_enable=True
将导致框架包含必要的响应头,以允许从任何来源访问应用程序中的任何路由。个别响应程序可以通过设置 Access-Control-Allow-Origin
头显式。
无论您是否实现CORS策略,我们都建议在适当的地方设置一个健壮的AuthN/Z层,以便根据需要授权单个客户端,以保护敏感资源。
直接通过 falcon.CORSMiddleware
应用程序的中间件允许定制所应用的CORS策略。中间件允许定制允许的来源,是否允许凭证以及是否可以公开额外的头。
使用¶
import falcon
# Enable a simple CORS policy for all responses
app = falcon.App(cors_enable=True)
# Alternatively, enable CORS policy for example.com and allow
# credentials
app = falcon.App(middleware=falcon.CORSMiddleware(
allow_origins='example.com', allow_credentials='*'))
import falcon.asgi
# Enable a simple CORS policy for all responses
app = falcon.asgi.App(cors_enable=True)
# Alternatively, Enable CORS policy for example.com and allow
# credentials
app = falcon.asgi.App(middleware=falcon.CORSMiddleware(
allow_origins='example.com', allow_credentials='*'))
备注
通过 cors_enable
参数设置为 True
应被视为与直接传递 CORSMiddleware
设置为应用程序的初始值设定项。
CORSMiddleware¶
- class falcon.CORSMiddleware(allow_origins: Union[str, Iterable[str]] = '*', expose_headers: Optional[Union[str, Iterable[str]]] = None, allow_credentials: Optional[Union[str, Iterable[str]]] = None)[源代码]¶
CORS中间件。
此中间件提供简单的开箱即用CORS策略,包括处理来自浏览器的预检请求。
另请参阅:
- 关键字参数:
allow_origins (Union[str, Iterable[str]]) -- 允许的原点列表(区分大小写)。字符串
'*'
充当通配符,匹配每个来源。(默认'*'
)。expose_headers (Optional[Union[str, Iterable[str]]]) -- 其他响应标头的列表,这些响应标头将通过
Access-Control-Expose-Headers
标题。这些标头是对CORS安全列表中的标头的补充:Cache-Control
,Content-Language
,Content-Length
,Content-Type
,Expires
,Last-Modified
,Pragma
。(默认None
)。另请参阅:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headersallow_credentials (Optional[Union[str, Iterable[str]]]) -- 来源列表(区分大小写),允许通过
Access-Control-Allow-Credentials
标题。字符串'*'
充当通配符,匹配每个允许的来源,而None
不允许所有原点。仅当源被允许时,此参数才会生效allow_origins
论点。(默认None
)。