Я заметил, что запросы к моему веб-приложению ASP.NET преуспевают, даже если я префикс URL с /(F())/
, что является бессмыслицей. Вызывается обычный метод действия. Request.Url
не отображает префикс URL. Поэтому, если я запрашиваю /(F())/x
, действие видит Request.Url == "/x"
Затем я попробовал другие сайты ASP.NET MVC, такие как переполнение стека:
Согласно Fiddler, запрос делается в соответствии с назначением:
Как вы видите, URL-адрес запроса верен, и сервер отвечает без перенаправления с полным контентом. В окне браузера также отображается этот URL.
Этот URL-адрес работает. Поэтому я пришел к выводу, что что-то в этой структуре заставляет этот запрос перезаписываться и префикс отбрасывается. Похоже, что приложение Qaru не знало префикса.
Тот же результат встречается в новом приложении MVC, созданном в Visual Studio 2017 на .NET 4.6.2 в Windows 7.
Другая забавная жертва: https://www.microsoft.com/(F(blah))/en-us/default.aspx (Домашняя страница Microsoft).
Строка (F())
не является специальной. См. Комментарии для других строк, которые работают, например. /(F(pV0))
.
Так как мой код ASP.NET слеп к исходному URL (Request.Url
не содержит префикс), я, похоже, даже не могу обнаружить это условие и не выполнить запрос.
Я не подтвердил, что это проблема MVC. Кажется, трудно найти виновника в огромном море функциональности, с которым поставляется ASP.NET + IIS. Кто знает, какие функции включены по умолчанию?! Я не думаю, что кто-то действительно знает:)
По крайней мере, это проблема SEO, но мне также мешает не знать, что происходит. Вот почему я расследую. Какое поведение и как избавиться от него?