«% 2b» в URL не работает для перезаписи URL - PullRequest
0 голосов
/ 08 октября 2018

У меня была настроена следующая перезапись URL в моем файле web.config

<system.webServer>
<rewrite>
  <rules>
    <rule name="Angular Routes" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="/" />
    </rule>
  </rules>
</rewrite>
</system.webServer>

, и у меня был этот URL => http://www.somesite.com/password-reset/dynamicParamValue;token=CfDJ8FDko%2FFet4BBsdmNJE1GyMyr%2FK%2Fzc8XGc788k428wh8A%2BHTxo%2BctYiPPLvhnR9KpGGxY%2By%2B9CTkLYOLk2g%2BIkYmCxVky%2FqI0cEfU5s5eKW6mNLj8J%2BJpPRXCqyMT0wNbdd%2Fczo%2FZPEuwzRpwM4ChWiQ%3D

Примечание: В приведенном выше URLУ меня есть необязательный угловой параметр с именем token.

Когда я нажимаю на вышеупомянутый URL в браузере, он дает мне 404 не найден.Я понятия не имею, почему он дает мне код состояния 404 и почему правило перезаписи URL не работает для этой конкретной ссылки.Другие маршруты работают нормально.Это единственный маршрут, который не работает.

Если я удаляю% из URL, он работает.Почему он не работает с% 2b в значении параметра маршрута?Пожалуйста, помогите мне заставить этот маршрут работать.

1 Ответ

0 голосов
/ 09 октября 2018

Ошибка HTTP 404.11 - не найдено

Модуль фильтрации запросов настроен на отклонение запроса, который содержит двойную escape-последовательность.

Возможно, это ваша ошибка.Чтобы это исправить, вам нужно включить двойное экранирование, добавив дополнительную настройку для модуля фильтрации запросов.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*"/>
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
          </conditions>
          <action type="Rewrite" url="/"/>
        </rule>
      </rules>
    </rewrite>
    <security>
      <requestFiltering allowDoubleEscaping="true"/>
    </security>
  </system.webServer>
</configuration>
...