首页 > 解决方案 > 如何在 Docker 容器中更改 Django Builtin dev Server?

问题描述

Django 内置开发服务器具有过滤掉包含下划线的 HTTP 标头的“功能”:

https://github.com/django/django/blob/7785e03ba89aafbd949191f126361fb9103cb980/django/core/servers/basehttp.py

def get_environ(self):
    # Strip all headers with underscores in the name before constructing
    # the WSGI environ. This prevents header-spoofing based on ambiguity
    # between underscores and dashes both normalized to underscores in WSGI
    # env vars. Nginx and Apache 2.4+ both do this as well.
    for k in self.headers:
        if '_' in k:
            del self.headers[k]

    return super().get_environ()

出于开发目的,我想注释掉这个 for 循环。我在 Docker 容器中运行 Django。构建图像时如何注释掉这些行?

标签: djangodocker

解决方案


HTTP 服务器禁止在 HTTP 标头名称中使用下划线。所以你不应该注释掉那个 for 循环或做任何类似的事情。相反,你可以——

将标题设置为 YOUR-CUSTOM-HEADER

使用连字符,而不是下划线

获取标头 request.headers.get('YOUR_CUSTOM_HEADER')


推荐阅读