django - 如何在 Docker 容器中更改 Django Builtin dev Server?
问题描述
Django 内置开发服务器具有过滤掉包含下划线的 HTTP 标头的“功能”:
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。构建图像时如何注释掉这些行?
解决方案
HTTP 服务器禁止在 HTTP 标头名称中使用下划线。所以你不应该注释掉那个 for 循环或做任何类似的事情。相反,你可以——
将标题设置为 YOUR-CUSTOM-HEADER
使用连字符,而不是下划线
获取标头 request.headers.get('YOUR_CUSTOM_HEADER')
推荐阅读
- ruby-on-rails - 将参数传递给 around_action 引发:LocalJumpError no block given (yield)
- python - Kivy:如何修复 gstplayer 中的“无法创建 playbin”错误
- python - python - 将.json加载到字典中失败
- php - 在 Wordpress 中上传 TSV 文件不起作用
- java - Java mssql-jdbc:从带有 xml 列的表中检索数据缓慢
- sql - SQL合并两列的最大值
- php - 服务器和客户端上的 Javascript/CSS 加密
- redux-saga - 在 Redux Saga 中按顺序调用动作(同步)
- java - 多线程中的对象锁定
- python - 如何使用 RSAPublicKey 字段腌制 namedtuple 子类