【发布时间】:2014-09-05 13:08:23
【问题描述】:
我正在运行来自 Apache 的两个 Django 站点。一个是 API 的演示页面,因此通过 HTTP 基本身份验证对另一个进行一些 API 调用。我也尝试从同一个站点做同样的事情,但我遇到了同样的问题。
发出请求时,Apache 会给出 403 错误消息/页面。
以下是API服务器的必要部分虚拟主机:
<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>
这是演示站点的虚拟主机:
<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>
看来,虽然我有WSGIPassAuthorization On,但基本身份验证仍在由 Apache 处理(如果身份验证失败,则 Apache 403 页面而不是来自 Django 的 JSON 错误)。
如果我从本地机器向 API 服务器发出相同的请求,它会起作用。
对可能出现的问题或我应该进一步调查的问题有什么建议吗?谢谢
编辑澄清: API 服务器有一个 OAuth2 API,我正在尝试为其创建演示页面/站点。如果我通过 cURL 或不同的服务器发出对 API 的请求,则请求成功,并且仅当请求来自与 API 相同的服务器(不同或相同的虚拟主机)时才会出现问题。
【问题讨论】:
标签: django apache wsgi basic-authentication