如果启用了身份验证,Azure 上的查询/标头太大
Posted
技术标签:
【中文标题】如果启用了身份验证,Azure 上的查询/标头太大【英文标题】:Query/headers too large on Azure if auth enabled 【发布时间】:2019-10-11 12:00:03 【问题描述】:我有一个在本地运行良好的 node/express 应用程序。我已将它上传到 Azure Web App,只要我不启用身份验证,它就可以正常工作。当我启用 AAD 身份验证时,应用程序失败并显示 STATUS 500.1011“错误请求”。我在 url 中有很多查询参数。如果我充分减少参数的长度,则应用程序会再次正常加载。 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】:我想我找到了问题所在。节点将November 2018 中的最大标头大小从 80kb 减少到 8kb。
有很多关于它的讨论here 和here。
我尝试增加 max-http-header-size,但无法使其在 Azure 上运行。所以我现在的解决方案是使用旧版本的节点。希望最终会在这些讨论中发布解决方案。
【讨论】:
【参考方案2】:只需在iisnode.yml中添加--max-http-header-size即可,至于在Azure Appservice中将Flag传递给NodeJS的chrome V8的细节:Pass flags to NodeJS's Chrome V8 engine in Azure Web Apps
【讨论】:
以上是关于如果启用了身份验证,Azure 上的查询/标头太大的主要内容,如果未能解决你的问题,请参考以下文章
由于授权标头,Azure Blob 存储 403 身份验证失败