添加 HTTP Method Overrides

添加 HTTP Method Overrides
某些 HTTP 代理不支持任意的 HTTP 方法或更新的 HTTP 方法(比如 PATCH)。 這種情況下,通過另一種完全違背協(xié)議的 HTTP 方法來“代理” HTTP 方法是可行 的。

這個方法使客戶端發(fā)出 HTTP POST 請求并設(shè)置 X-HTTP-Method-Override 標(biāo)頭的值為想要的 HTTP 方法(比如 PATCH )。

這很容易通過一個 HTTP 中間件來完成:

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

    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
        return self.app(environ, start_response)

在 Flask 中使用它的必要步驟見下:

from flask import Flask

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

https://www.csdn.net/handbook/flask/flask0.10/patterns/methodoverrides.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容