我正在与Django Rest Framework和Django Rest Framework JWT合作,但是我遇到了有关本地行为与外部行为的问题。
当我发出POST
请求以获取JWT令牌时,一切都按要求运行在本地和在我的EC2实例上。但是,一旦有了令牌,当我向需要身份验证的服务器发出请求时,只有本地服务器会返回预期的响应。在我的已部署服务器上,出现以下错误:
{"detail":"Authentication credentials were not provided."}
到目前为止,我已经尝试过:
通过切入我的服务器并启用http.conf
来编辑WSGIPathAuthorization
。 (看到了类似的帖子here,并尝试了解决方法)
什么可能导致此行为?我的本地计算机和部署的代码是相同的,这使我相信这与服务器端配置有关。
感谢所有帮助。谢谢!
答案 0 :(得分:1)
您提到了ElasticBeanstalk。
您可以将其添加到将在部署期间执行的容器命令中。
01_wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
答案 1 :(得分:0)
启用WSGPPathAuthorization后,只需重新启动Apache即可解决我的错误。对于那些遇到类似问题的人,这是我所做的:
SSH进入服务器
导航至http.conf
文件的存储位置(在Apache中,通常是
etc/httpd/http.conf
)
编辑http.conf
,添加WSGIPathAuthorization On
。
通过运行sudo service httpd restart
重新启动Apache。
答案 2 :(得分:0)
当您在 EC2 实例上使用 apache 配置 wsgi 时,通常会出现此问题。 基本上是apache配置中的问题, 它与 AWS EC2 没有关系。 由于默认情况下 apache 不处理 Authorization 标头,因此,为了实现这一点,我们需要配置其文件。 对于ubuntu
cd /etc/apache2/apache2.conf
粘贴以下行
WSGIPassAuthorization On