同一Apache服务器上的两个Django站点-禁止在两个站点之间进行基本身份验证
我在Apache上运行两个Django站点。一个是API的演示页面,因此对另一个进行一些API调用,并通过HTTP basic auth进行身份验证。我也试着在同一个网站上做同样的事情,但我有同样的问题 当发出请求时,Apache会给出403错误消息/页 以下是API服务器虚拟主机的必要部分:同一Apache服务器上的两个Django站点-禁止在两个站点之间进行基本身份验证,django,apache,wsgi,basic-authentication,Django,Apache,Wsgi,Basic Authentication,我在Apache上运行两个Django站点。一个是API的演示页面,因此对另一个进行一些API调用,并通过HTTP basic auth进行身份验证。我也试着在同一个网站上做同样的事情,但我有同样的问题 当发出请求时,Apache会给出403错误消息/页 以下是API服务器虚拟主机的必要部分: <VirtualHost 12.34.567.890:80> ServerAdmin admin@example.com ServerName dev.example.com
<VirtualHost 12.34.567.890:80>
ServerAdmin admin@example.com
ServerName dev.example.com
ServerAlias dev.example.com
ErrorLog /var/log/apache2/lab-error.log
WSGIScriptAlias / /webapps/lab/lab-wsgi.py
WSGIPassAuthorization On
<Directory /webapps/lab>
<Files lab-wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
</VirtualHost>
服务器管理员admin@example.com
ServerName dev.example.com
ServerAlias dev.example.com
ErrorLog/var/log/apache2/lab-error.log
WSGIScriptAlias//webapps/lab/lab-wsgi.py
WSGIPassAuthorization On
命令拒绝,允许
通融
这是演示站点虚拟主机:
<VirtualHost 12.34.567.890:80>
ServerAdmin admin@example.com
ServerName dvdemo.example.com
ServerAlias dvdemo.example.com
ErrorLog /var/log/apache2/demo-error.log
WSGIScriptAlias / /webapps/lab/demo/Demo/wsgi.py
WSGIPassAuthorization On
<Directory /webapps/lab/demo/Demo>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
</VirtualHost>
服务器管理员admin@example.com
ServerName dvdemo.example.com
ServerAlias dvdemo.example.com
ErrorLog/var/log/apache2/demo-error.log
WSGIScriptAlias//webapps/lab/demo/demo/wsgi.py
WSGIPassAuthorization On
命令允许,拒绝
通融
看起来,尽管我在上进行了WSGIPassAuthorization,但基本身份验证仍然由Apache处理(Apache 403页面,而不是验证失败时来自Django的JSON错误)
如果我从本地机器向API服务器发出相同的请求,它就会工作
有没有关于什么可能是错误的建议,或者我应该进一步调查什么?谢谢
编辑以澄清:
API服务器有一个OAuth2 API,我正试图为它创建一个演示页面/站点。如果我通过cURL或其他服务器向API发出请求,则请求会成功,并且只有当请求来自与API相同的服务器(不同或相同的虚拟主机)时才会出现问题。文件指令中不能有子目录。使用:
<Directory /webapps/lab/demo/Demo>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
命令允许,拒绝
通融
WSGIPassAuthorization用于通过HTTP基本身份验证所需的凭据进行传递。Django使用基于表单的身份验证,因此通常不太可能需要这样做。您确实在使用Django中的某些东西来执行HTTP基本身份验证吗。明确您在哪里处理HTTP基本身份验证。是的,Django肯定在使用HTTP基本身份验证。API服务器有一个OAuth2 API,我正试图为它创建一个演示页面/站点。正如我所说,它可以从除同一服务器之外的任何位置请求API端点。我也试着像你提到的那样修复文件指令,以防万一,但是运气不好。