OpenStack公共组件oslo之七——oslo.middleware

        oslo.middleware库可以添加在WSGI pipeline用来拦截request/response请求。其基类可以为WSGI增强功能,如添加、删除、修改HTTP头部信息,支持限制大小和连接数等。本文主要分析Oslo组件如何使用oslo.middleware来实现这些功能。

1. oslo.middleware中的主要pipeline

        oslo.middleware中定义了多个WSGI的pipeline,如cors、request_id等。所以,本文首先总结了oslo.middleware中常用的pipeline的实现、作用以及使用场景。在oslo.middleware中,所有的pipeline的实现类都继承自一个父类ConfigurableMiddleware,其是一个基本的WSGI middleware装饰器。该类在实例化时会绑定一个WSGI应用对象APP,则该ConfigurableMiddleware对象在实际使用中便会对绑定的WSGI APP的request/response进行相应的包装。在ConfigurableMiddleware类中,分别定义了process_request(request)和process_response(response, request)方法分别对request和response进行处理。最后,该类还为paste.deploy实现了factory方法,使其可以通过读取WSGI配置文件调用相关类的装饰器。了解了ConfigurableMiddleware类的实现之后,下面便可以根据ConfigurableMiddleware类的实现针对具体的pipeline的实现进行详细的解读。

1.1 CORS

        CORS指的是跨域资源共享,该机制允许Web服务器进行跨域访问控制,从而使得跨域数据传输得以安全进行。浏览器支持在API容器中使用CORS,以降低跨域HTTP请求所带来的风险。CORS在原有HTTP协议基础上新增了一组HTTP首部字段,用以表示服务器声明哪些源站可以访问哪些资源,这些字段包括Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers、Access-Control-Max-Age等。关于CORS的具体介绍,本文不作详细解释,感兴趣的朋友可以参考以下的博文https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

        而oslo.middleware中的CORS即是为WSGI请求或响应添加CORS字段和处理的pipeline,其覆写了父类的process_request(request)和process_response(response, request)方法来实现其功能。

    simple_headers = [
        'Accept',
        'Accept-Language',
        'Content-Type',
        'Cache-Control',
        'Content-Language',
        'Expires',
        'Last-Modified',
        'Pragma'
    ]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值