添加 HTTP Method Overrides
某些 HTTP 代理不支持任意的 HTTP 方法或更新的 HTTP 方法(比如 PATCH)。 這種情況下侣滩,通過另一種完全違背協(xié)議的 HTTP 方法來“代理” HTTP 方法是可行 的初烘。
這個(gè)方法使客戶端發(fā)出 HTTP POST 請(qǐng)求并設(shè)置 X-HTTP-Method-Override 標(biāo)頭的值為想要的 HTTP 方法(比如 PATCH )涡真。
這很容易通過一個(gè) 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