Правило перезаписи службы приложений IIS / Azure для запроса POST с телом - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть экземпляр службы приложений Azure, на котором запущено приложение Node.JS. В файле web.config есть правило перезаписи, которое направляет все входящие запросы на /entry/sever.js, который является точкой входа приложения.

Правило перезаписи принимает только POST запросов, если они не имеют тела. Если у них действительно есть тело, я получаю ошибку 404 в журналах, предполагая, что сервер не смог удовлетворить этот запрос.

Чтобы было ясно, я знаю, что проблема не в самом приложении; это из-за того, что IIS не перенаправляет мой запрос POST-with-body в приложение или в любое другое место.

Итак, как мне создать правило перезаписи, которое обрабатывает POST запросов с телами? В частности, мне нужно иметь возможность передавать POST с данными application / json в приложение.

Мой файл web.config:

    <configuration>
      <system.webServer>
        <webSocket enabled="false" />
        <handlers>
          <!-- Indicates that the server.js file is a node.js site to be handled by the iisnode module -->
          <add name="iisnode" path="entry/server.js" verb="*" modules="iisnode"/>
        </handlers>
        <rewrite>
          <rules>
            <!-- Do not interfere with requests for node-inspector debugging -->
            <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
              <match url="^entry/server.js\/debug[\/]?" />
            </rule>
            <!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
            <rule name="StaticContent">
              <action type="Rewrite" url="public{REQUEST_URI}"/>
            </rule>

            <!-- All other URLs are mapped to the node.js site entry point -->
            <rule name="DynamicContent">
              <conditions>
                 <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
              </conditions>
              <action type="Rewrite" url="entry/server.js"/>
            </rule>
          </rules>
        </rewrite>

        <!-- 'bin' directory has no special meaning in node.js and apps can be placed in it -->
        <security>
          <requestFiltering>
            <hiddenSegments>
              <remove segment="bin"/>
            </hiddenSegments>
          </requestFiltering>
        </security>

        <!-- Make sure error responses are left untouched -->
        <httpErrors existingResponse="PassThrough" />
      </system.webServer>
     </configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...