Python|Flask解决跨域问题使用指定路由1.使用CORS功能配置全局路由fromflaskimportFlask,requestfromflask_corsimportCORSapp=Flask(__name__)CORS(app,supports_credentials=True)其中CORS提供了一些参数来帮助我们自定义操作。常用的我们可以配置origins、methods、allow_headers、supports_credentials所有的配置项如下:""":paramresources:一系列正则表达式和(可选)关联的CORS选项将应用于给定的资源路径。如果参数是一个字典,它的键必须是正则表达式,值必须是一个kwargs字典,与这个函数的kwargs相同。如果参数是一个列表,它应该是一个正则表达式列表,应用程序为此-应用范围内的配置选项。如果参数是一个字符串,它应该是一个正则表达式,应用程序范围内的配置选项被应用。默认:匹配所有并应用应用程序级配置:typeresources:dict,iterable或string:paramorigins:来源,或允许请求的来源列表。来源可以是正则表达式,区分大小写的字符串,或星号默认值:'*':typeorigins:列表,字符串或正则表达式:parammethods:允许的来源允许访问非简单请求的方法或方法列表。默认值:[GET、HEAD、POST、OPTIONS、PUT、PATCH、DELETE]:类型方法:列表或字符串:paramexpose_headers:可以安全地暴露给CORSAPI规范的API的标头或列表。默认值:无:typeexpose_headers:列表或字符串:paramallow_headers:允许的来源访问此资源时可以使用的标题或标题字段名称列表。标头可以是正则表达式、区分大小写的字符串或星号。默认值:'*',允许所有标头:typeallow_headers:列表、字符串或正则表达式:paramsupports_credentials:允许用户发出经过身份验证的请求。如果为真,则注入`Access-Control-Al响应中的low-Credentials标头。这允许跨域提交cookie和凭据。:注意:此选项不能与“*”来源结合使用默认值:False:typesupports_credentials:bool:parammax_age:此CORS请求可能被缓存的最长时间。此值设置为“Access-Control-Max-Age”标头。默认值:无:typemax_age:timedelta,整数,字符串或无:paramsend_wildcard:如果为真,并且origins参数为“*”,则发送通配符“Access-Control-Allow-Origin”标头,而不是请求的“来源`标题。默认值:False:typesend_wildcard:bool:paramvary_header:如果为真,则标题Vary:Origin将根据W3实施指南返回。在动态生成Access-Control-Allow-Origin时设置此标头(例如,当有超过一个允许的来源,并且返回一个不是'*'的来源)通知CDN和其他缓存CORS标头是动态的,不能缓存。如果为False,则永远不会注入或更改Vary标头。Default:True:typevary_header:bool"""2.使用@cross_origin配置单行路由fromflaskimportFlask,requestfromflask_corsimportcross_originapp=Flask(__name__)@app.route('/')@cross_origin(supports_credentials=True)defhello():name=request.args.get("name","World")returnf'Hello,{name}!'其中cross_origin和CORS提供了一些基本相同的参数常用的我们可以配置origins、methods、allow_headers、supports_credentials所有的配置项如下:"""这个函数是用来包装Flask路由的装饰器。最简单的情况下,只需使用默认参数来允许所有来源什么是最宽松的配置。如果此方法修改状态或执行可能被强制执行的身份验证,则应添加一定程度的保护,例如跨站点伪造请求保护。:paramorigins:来源或来源列表允许来自的请求。来源可以是正则表达式、区分大小写的字符串或星号默认值:'*':typeorigins:列表、字符串或正则表达式:parammethods:方法或方法列表允许的来源允许访问非简单请求。默认值:[GET,HEAD,POST,OPTIONS,PUT,PATCH,DELETE]:类型方法:列表或字符串:paramexpose_headers:可以安全地公开给CORSAPI规范的API的标头或列表。默认值:无:typeexpose_headers:列表或字符串:paramallow_headers:允许的来源访问此资源时可以使用的标题或标题字段名称列表。标头可以是正则表达式、区分大小写的字符串或星号。默认值:'*',允许所有标头:typeallow_headers:列表、字符串或正则表达式:paramsupports_credentials:允许用户发出经过身份验证的请求。如果为真,则在响应中注入“Access-Control-Allow-Credentials”标头。这允许跨域提交cookie和凭据。:注意:此选项不能与“*”来源结合使用默认值:False:typesupports_credentials:bool:parammax_age:此CORS请求可能被缓存的最长时间。这个值被设置为“Access-Control-Max-Age”标头。默认值:无:typemax_age:timedelta,整数,字符串或无:paramsend_wildcard:如果为真,并且origins参数为“*”,则发送通配符“Access-Control-Allow-Origin”标头,而不是请求的“来源`标题。默认值:False:typesend_wildcard:bool:paramvary_header:如果为真,则标题Vary:Origin将根据W3实施指南返回。在动态生成“Access-Control-Allow-Origin”时设置此标头(例如,当有多个允许的来源时,并且返回的来源不是“*”)通知CDN和其他缓存CORS标头是动态的,并且无法缓存。如果为False,则永远不会注入或更改Vary标头。默认值:True:typevary_header:bool:paramautomatic_options:仅适用于`cross_ori杜松子酒装饰器。如果为True,Flask-CORS将覆盖Flask的默认OPTIONS处理以返回OPTIONS请求的CORS标头。Default:True:typeautomatic_options:bool配置参数说明ParameterTypeHeadDefaultDescriptionresourcesDictionary,iteratororstringNoneall配置允许跨域访问的路由接口的源列表、字符串或正则表达式。Access-Control-Allow-Origin*配置允许跨域访问的源方法列表和字符串。OPTIONS,PUT,PATCH,DELETE]配置跨域支持的请求方式domainrequestheadersupports_credentialsbooleanvalueAccess-Control-Allow-CredentialsFalse允许请求发送cookiemax_agetimedelta,integer,stringAccess-Control-Max-AgeNone预检请求的有效时长在flask的跨域配置中总结,我们可以使用flask-cors进行配置,其中CORS函数用于全局配置,@cross_origin用于配置具体路由。参考https://flask-cors.readthedoc...
