Czy mogę usunąć to pytanie? Wyjaśniłem, jaki był problem, a nie było IIS ... Zobacz moją odpowiedź poniżej dla wyniku.Dziwne przekierowanie AJAX 401 z IIS
oryginalne pytanie Pracuję nad aplikacji ASP.Net MVC i uruchomić w celu dziwny problem z przepisywania URL przekierowania i żądań AJAX.
Dodałem następującą regułę przepisywania do mojego Web.config w witrynie głównej.
<rewrite>
<rules>
<rule name="Account" stopProcessing="true">
<match url="^SubApp/Account/(.*)$" />
<action type="Redirect" url="Account/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>
Wszystko wydaje się działać ok, jeśli mogę użyć Permanent
lub Temporary
redirectType
w config, ale nie ze strony błędu HTTP Error 401.0 - Unauthorized
IIS.
Kiedy wysyłam normalne żądanie GET za pośrednictwem przeglądarki do działania, które wywołałoby tę regułę, np. https://some-site/SubApp/Account/Settings
, a następnie otrzymuję 302 Found i nagłówek lokalizacji jest ustawiony na oczekiwany URL https://some-site/Account/Settings
, a odpowiednia strona jest renderowana.
Jednak gdy wykonuję żądanie GET za pośrednictwem AJAX JQuery, tj. $.get('https://some-site/SubApp/Account/Settings')
, zwrócony kod stanu odpowiedzi to 401 Unauthorized
, ale nadal ma odpowiedni nagłówek położenia.
Treść odpowiedzi to standardowa strona błędu IIS HTTP Error 401.0 - Unauthorized
.
Weirdly wszystko wydaje się działać dobrze, jeśli używam typów przekierowania Permanent
lub Temporary
w konfiguracji, ale nie tylko z Found
.
/SubApp
to osobna aplikacja, która znajduje się poniżej głównej witryny pod numerem /
.
Co się dzieje?
ekranu
redirectType="Permanent"
redirectType="Found"
redirectType="Temporary"
Jak widać na screenach jedynym di fence to redirectType
określony w Web.config
.
Jak widać przekierowania działają zgodnie z oczekiwaniami, z wyjątkiem typu przekierowania Found
, który prawdopodobnie uzyska odpowiedź o przekierowaniu na ten sam adres URL, co pozostałe.
Czy możesz dodać kod. – Mairaj
Czy możesz dodać zrzut ekranu ruchu sieciowego dla obu przypadków (działający/nie działa)? – drax
Mogę to zrobić, ale to całkiem '$ .get ("/BMS/Account/Settings ")'. Zaktualizuję pytanie kilkoma zrzutami ekranu ... – phuzi