У меня есть приложение node/express, которое отлично работает локально. Я загрузил его в Azure Web App, и он работает нормально, пока я не включаю аутентификацию. Когда я включаю проверку подлинности AAD, приложение завершается с ошибкой STATUS 500.1011 «Bad Request». У меня довольно много параметров запроса в URL-адресе. Если я уменьшу длину параметров в достаточной степени, приложение снова загрузится нормально. Кажется, есть какое-то ограничение на запрос/заголовки в Azure?
Я уже несколько часов пытаюсь это исправить, но думаю, что должен признать поражение. Думал может это исправит, но не похоже.
Это мой текущий 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>
Я думаю, что нашел проблему. Node уменьшил максимальный размер заголовка с 80 КБ до 8 КБ в ноябрь 2018 г..
Об этом много говорят здесь и здесь.
Я попытался увеличить max-http-header-size, но не смог заставить его работать в Azure. Поэтому мое решение на данный момент — использовать более старую версию node. Надеюсь, что в конце концов в этих обсуждениях будет опубликовано решение.
просто добавьте --max-http-header-size в iisnode.yml, что касается деталей передачи флага в NodeJS chrome V8 в службе приложений Azure: Передача флагов движку NodeJS Chrome V8 в Azure Web Apps