Azure Python网站不对URL中的URL进行解码

时间:2015-05-10 17:53:04

标签: python django azure fastcgi azure-web-sites

我正在使用Django Azure教程在Azure网站上部署Django网站。一切正常,除了一个URL:我唯一接受空格的URL。

当我请求https://mysite.azurewebsites.net/root/path/this%20is%20a%20parameter时(我已经检查过查询是用%20发送的 - 不是空格或双重编码),Django中的PATH_INFO实际上是/ root / path / this%20is% 20A%20parameter。虽然在我的理解中它应该用空格而不是%20解码 - IIS(实际上,http.sys)负责解码。

它与调试服务器完美配合。但是在Azure IIS中,由于值很糟糕,我的应用程序崩溃了。

使用查询参数(?key = value)时也没有问题(这是合乎逻辑的,因为IIS不会触及该部分)。

在访问日志中,奇怪的是我发现加号(+)而不是%20或空格:GET / root / path / this +是+ a +参数(非常奇怪,因为+在URL的那一部分不合法,也许它只是一个记录工件?)

最后,我没有使用任何形式的重写 - 我已经将FastCGI处理程序直接映射到此URL以避免混淆。

<?xml version="1.0"?>
<configuration>
    <appSettings>
        <add key="WSGI_ALT_VIRTUALENV_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
        <add key="WSGI_ALT_VIRTUALENV_ACTIVATE_THIS" value="D:\home\site\wwwroot\env\Scripts\activate_this.py" />
        <add key="WSGI_HANDLER" value="ptvs_virtualenv_proxy.get_virtualenv_handler()" />
        <add key="PYTHONPATH" value="D:\home\site\wwwroot" />
        <add key="DJANGO_SETTINGS_MODULE" value="MYAPP.settings" />   
    </appSettings>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <customErrors mode="Off"/>
    </system.web>
    <system.webServer>
        <handlers>
            <add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\Python27\python.exe|D:\Python27\Scripts\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
    </system.webServer>
</configuration>

有人会有这个并且能够检索解码值吗?谢谢!

1 个答案:

答案 0 :(得分:1)

最后,它是Azure为WSGI(WSGI / FCGI网桥)提供的IIS处理程序中的一个错误。我在their GitHub

中打开了一个错误
相关问题