Browse Source

feat: respect x-* headers for redirections (#9054)

tags/0.9.2
kurokobo 1 year ago
parent
commit
c0b71f8286
No account linked to committer's email address
4 changed files with 21 additions and 0 deletions
  1. 3
    0
      api/.env.example
  2. 2
    0
      api/app.py
  3. 6
    0
      api/configs/feature/__init__.py
  4. 10
    0
      api/extensions/ext_proxy_fix.py

+ 3
- 0
api/.env.example View File

@@ -271,6 +271,9 @@ HTTP_REQUEST_MAX_WRITE_TIMEOUT=600
HTTP_REQUEST_NODE_MAX_BINARY_SIZE=10485760
HTTP_REQUEST_NODE_MAX_TEXT_SIZE=1048576

# Respect X-* headers to redirect clients
RESPECT_XFORWARD_HEADERS_ENABLED=false

# Log file path
LOG_FILE=


+ 2
- 0
api/app.py View File

@@ -36,6 +36,7 @@ from extensions import (
ext_login,
ext_mail,
ext_migrate,
ext_proxy_fix,
ext_redis,
ext_sentry,
ext_storage,
@@ -156,6 +157,7 @@ def initialize_extensions(app):
ext_mail.init_app(app)
ext_hosting_provider.init_app(app)
ext_sentry.init_app(app)
ext_proxy_fix.init_app(app)


# Flask-Login configuration

+ 6
- 0
api/configs/feature/__init__.py View File

@@ -247,6 +247,12 @@ class HttpConfig(BaseSettings):
default=None,
)

RESPECT_XFORWARD_HEADERS_ENABLED: bool = Field(
description="Enable or disable the X-Forwarded-For Proxy Fix middleware from Werkzeug"
" to respect X-* headers to redirect clients",
default=False,
)


class InnerAPIConfig(BaseSettings):
"""

+ 10
- 0
api/extensions/ext_proxy_fix.py View File

@@ -0,0 +1,10 @@
from flask import Flask

from configs import dify_config


def init_app(app: Flask):
if dify_config.RESPECT_XFORWARD_HEADERS_ENABLED:
from werkzeug.middleware.proxy_fix import ProxyFix

app.wsgi_app = ProxyFix(app.wsgi_app)

Loading…
Cancel
Save