CORS

Cross Origin Resource Sharing (CORS)是现代浏览器执行的附加安全检查,以防止不同域之间的未授权请求。

在开发Web API时,通常还会实现CORS策略。因此,Falcon提供了一种启用简单CORS策略的简单方法,即通过传递给 falcon.Appfalcon.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='*'))

备注

通过 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-ControlContent-LanguageContent-LengthContent-TypeExpiresLast-ModifiedPragma 。(默认 None )。另请参阅:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers

  • allow_credentials (Optional[Union[str, Iterable[str]]]) -- 来源列表(区分大小写),允许通过 Access-Control-Allow-Credentials 标题。字符串 '*' 充当通配符,匹配每个允许的来源,而 None 不允许所有原点。仅当源被允许时,此参数才会生效 allow_origins 论点。(默认 None )。