美文网首页
添加HTTP方法覆盖

添加HTTP方法覆盖

作者: 空口言_1d2e | 来源:发表于2021-04-08 10:41 被阅读0次

某些HTTP代理不支持任意HTTP方法或更新的HTTP方法(例如PATCH)。在这种情况下,有可能通过完全违反协议的另一种HTTP方法来“代理” HTTP方法。

它的工作方式是让客户端执行HTTP POST请求并设置X-HTTP-Method-Override标头。然后,在将方法传递给Flask之前,将其替换为标头值。

这可以通过HTTP中间件来完成:

class HTTPMethodOverrideMiddleware(object):
    allowed_methods = frozenset([
        'GET',
        'HEAD',
        'POST',
        'DELETE',
        'PUT',
        'PATCH',
        'OPTIONS'
    ])
    bodyless_methods = frozenset(['GET', 'HEAD', 'OPTIONS', 'DELETE'])

    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        method = environ.get('HTTP_X_HTTP_METHOD_OVERRIDE', '').upper()
        if method in self.allowed_methods:
            environ['REQUEST_METHOD'] = method
        if method in self.bodyless_methods:
            environ['CONTENT_LENGTH'] = '0'
        return self.app(environ, start_response)

要将其与Flask一起使用,请使用中间件包装app对象:

from flask import Flask

app = Flask(__name__)
app.wsgi_app = HTTPMethodOverrideMiddleware(app.wsgi_app)

https://flask.palletsprojects.com/en/1.1.x/patterns/methodoverrides/

相关文章

  • 添加HTTP方法覆盖

    某些HTTP代理不支持任意HTTP方法或更新的HTTP方法(例如PATCH)。在这种情况下,有可能通过完全违反协议...

  • extends和implements

    extends: extends 继承类X 通过extend 类Y来添加功能,或者添加变量,或者添加方法,或者覆盖...

  • 在category中实现dealloc要执行的代码

    问题: 给类添加category方法时,如果方法名与原类中的方法重名是会‘覆盖’原类的方法(不是真正意义上的覆盖,...

  • recode

    1.添加属性和方法,以及对方法的重写重写:a.完全覆盖 b.保留父类的功能(super().父类方法) 添加对...

  • 问题[◇◇◇◇◇]:Objective-C 如何对已有的方法,添

    这题目主要考察的是runtime如何交换方法 先在分类中添加一个方法,注意不能重写系统方法,会覆盖先在分类中添加一...

  • Masonry

    1、常用方法:这个方法只会添加新的约束 这个方法会将以前的所有约束删掉,添加新的约束 这个方法将会覆盖以前的某些特...

  • 分类-Category

    分类-Category 分类的功能 在OC中,我们可以使用分类为类添加方法,属性.也可以覆盖类原有的方法,自己添加...

  • 分类-Category

    分类-Category 分类的功能 在OC中,我们可以使用分类为类添加方法,属性.也可以覆盖类原有的方法,自己添加...

  • 添加 HTTP Method Overrides

    添加 HTTP Method Overrides某些 HTTP 代理不支持任意的 HTTP 方法或更新的 HTTP...

  • 关于响应选择Cell事件问题

    给cel的contenview添加手势,会覆盖系统的选择完成cell的代理方法

网友评论

      本文标题:添加HTTP方法覆盖

      本文链接:https://www.haomeiwen.com/subject/fgmmkltx.html