Query/headers 如果启用身份验证,在 Azure 上太大
Query/headers too large on Azure if auth enabled
我有一个 node/express 应用程序在本地运行良好。我已将它上传到 Azure Web App,只要我不启用身份验证,它就可以正常工作。当我启用 AAD 身份验证时,应用程序失败,状态为 500.1011 "Bad Request"。我在 url 中有很多查询参数。如果我充分减少参数的长度,应用程序将再次正常加载。 Azure 中的 query/headers 似乎有一些限制?
我已经尝试了几个小时来解决这个问题,但我想我不得不承认失败。我想也许 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>
我想我找到了问题所在。在 November 2018.
中节点的最大 header 大小从 80kb 减少到 8kb
我尝试增加 max-http-header-size,但无法在 Azure 上运行。所以我现在的解决方案是使用旧版本的节点。希望最终能在这些讨论中发布解决方案。
只需在iisnode.yml中添加--max-http-header-size即可,至于在Azure Appservice中将Flag传递给NodeJS的chrome V8的详细信息:
我有一个 node/express 应用程序在本地运行良好。我已将它上传到 Azure Web App,只要我不启用身份验证,它就可以正常工作。当我启用 AAD 身份验证时,应用程序失败,状态为 500.1011 "Bad Request"。我在 url 中有很多查询参数。如果我充分减少参数的长度,应用程序将再次正常加载。 Azure 中的 query/headers 似乎有一些限制?
我已经尝试了几个小时来解决这个问题,但我想我不得不承认失败。我想也许 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>
我想我找到了问题所在。在 November 2018.
中节点的最大 header 大小从 80kb 减少到 8kb我尝试增加 max-http-header-size,但无法在 Azure 上运行。所以我现在的解决方案是使用旧版本的节点。希望最终能在这些讨论中发布解决方案。
只需在iisnode.yml中添加--max-http-header-size即可,至于在Azure Appservice中将Flag传递给NodeJS的chrome V8的详细信息: