如果启用了身份验证,则在Azure上的查询/标题过大

时间:2019-05-24 22:33:25

标签: node.js azure express iis iisnode

我有一个在本地运行良好的node / express应用。我已将其上载到Azure Web App,只要不启用身份验证,它就可以正常工作。启用AAD身份验证后,该应用程序将失败,并显示状态500.1011“错误请求”。我在网址中有很多查询参数。如果我充分减少了参数的长度,则应用会再次加载正常。看来Azure中的查询/标头有一些限制吗?

我已经尝试了几个小时来解决此问题,但我认为我必须承认失败。我以为this可以解决这个问题,但似乎不是。

这是我当前的web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <webSocket enabled="true" />
        <handlers>
            <add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
        </handlers>
        <rewrite>
        <rules>
            <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
                <match url="^server.js\/debug[\/]?" />
            </rule>
            <rule name="DynamicContent">
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
                </conditions>
                <action type="Rewrite" url="server.js"/>
            </rule>
        </rules>
        </rewrite>
        <security>
            <requestFiltering>
                <requestLimits maxQueryString="32768" maxUrl="65536"/>
            </requestFiltering>
        </security>
        <httpErrors existingResponse="PassThrough" />
    </system.webServer>
</configuration>

1 个答案:

答案 0 :(得分:0)

我认为我找到了问题。节点将November 2018中的最大标头大小从80kb减小到8kb。

herehere对此有很多讨论。

我尝试增加max-http-header-size,但无法使其在Azure上运行。因此,我目前的解决方案是使用旧版本的node。希望最终在这些讨论中发布解决方案。