You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Django启用WSGIPassAuthorization?配置位置咨询(macOS环境)

配置WSGIPassAuthorization让Django接收Authorization请求头

嘿,这个问题我之前调试Django API的时候也踩过坑!要让Django能拿到Authorization请求头,核心就是开启WSGIPassAuthorization On,具体配置位置得看你是怎么部署Django的,下面给你捋清楚几种常见场景:

1. Apache + mod_wsgi 部署(macOS 自带Apache或手动安装的Apache)

macOS上的Apache配置文件位置分两种:

  • 全局配置:/etc/apache2/httpd.conf
  • 虚拟主机配置:/etc/apache2/extra/httpd-vhosts.conf(或者你自定义的虚拟主机配置文件)

你需要在对应站点的<VirtualHost>块中添加配置,示例如下:

<VirtualHost *:80>
    ServerName your-api-domain.local
    WSGIScriptAlias / /path/to/your/django/project/wsgi.py

    # 关键:开启Authorization头传递给WSGI应用
    WSGIPassAuthorization On

    <Directory /path/to/your/django/project>
        Require all granted
    </Directory>
</VirtualHost>

配置完成后,重启Apache生效:

sudo apachectl restart

2. 使用 mod_wsgi-express(开发轻量服务器)

如果是用mod_wsgi-express做开发服务器,启动时直接加参数即可:

mod_wsgi-express start-server --wsgi-pass-authorization on /path/to/your/wsgi.py

或者你可以把这个参数写到启动脚本里,避免每次手动输入。

3. 其他WSGI服务器参考(非mod_wsgi场景)

如果你用的是Gunicorn、uWSGI这类WSGI服务器,默认是会传递Authorization头的,一般不需要额外配置。但如果遇到拿不到的情况,可以检查:

  • Gunicorn:确保没有自定义的请求头过滤逻辑
  • uWSGI:可以在配置中添加ignore-sigpipe = true,并确认没有开启disable-logging之类的可能影响头传递的选项

测试验证

配置完成后,你可以用curl命令测试是否生效:

curl -H "Authorization: Bearer your-test-token" http://your-api-endpoint

在Django视图中,通过request.META.get('HTTP_AUTHORIZATION')来获取请求头,确认能拿到值就说明配置成功啦!

内容的提问来源于stack exchange,提问作者epord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:27:05