Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

302 Infinite Loop

I have a web application that is stuck in an infinite loop, and I have no idea where to look next. This is an intranet site, so there is no link I can share, but I've listed as many details as I can think of below. I would appreciate any ideas or suggestions. Anyone has.

The details:

  • IIS 7
  • .Net 4.0
  • Windows 2008
  • Default document is Login.aspx
  • No HTTP redirect set on app or Login.aspx in IIS
  • Fiddler shows Login.aspx using status code of 302 and redirecting to Login.aspx

If I open my site, it points to Login.aspx and gets stuck in a 302 loop. If I open the site but point to register.aspx, Fiddler shows register.aspx going to Login.aspx which of course redirects to Login.aspx.

What I've done:

  • Run the webapp from Visual Studio -- everything works fine
  • Check web.config for redirect commands -- there are none
  • Check IIS for redirect commands -- there are none
  • Look at Fiddler for another page in the loop -- there are none, just Login.aspx to Login.aspx
  • Check Login.aspx for redirect commands -- there are none
  • Check Login.aspx code behind for redirect commands -- there are none
  • Run the app on my box using the web.config from the server -- everything works
  • Check Login.aspx for redirect commands -- there are none
  • Cleared Cache -- problem still persists
  • Republished -- problem still persists
  • Republished and cleared Cache -- problem still persists
  • Disabled Default Document in IIS
like image 541
Johnie Karr Avatar asked Jul 02 '12 14:07

Johnie Karr


People also ask

How do I fix error code 302?

You can follow these five steps to fix HTTP 302 errors on your website: Determine whether the redirects are appropriate or not by examining the URLs that are issuing the 302 redirects. Check your plugins to make sure any redirect settings are valid. Ensure that your WordPress URL settings are configured correctly.

What is a 302 status code?

The HyperText Transfer Protocol (HTTP) 302 Found redirect status response code indicates that the resource requested has been temporarily moved to the URL given by the Location header.

How do I fix error 302 in IIS?

Normally to set up HTTPS, all you do is go into IIS, Bindings, and add a HTTPS binding (you'll need a TLS certificate to make the https work properly). then just make sure you include the "https://" at the start of your URL.

How do I turn off 302 redirects?

If the HTTP library which you are using does not enable you to control this behavior, you can set an additional header X-If-No-Redirect with a value of 1 . This will prevent our servers from responding with a 302 status code in the case of a redirect.


1 Answers

Will share this just in case it is an answer, as it sounds like a problem we had.

  1. ASP.net MVC site with [RequiresHttps] attribute on our login action.

  2. Behind a load balancer that was doing SSL acceleration (resulting in the request that actually hits the server side code being already decoded and effectively under http).

  3. Server code thinks this is an issue and redirects back to itself using https.

  4. Rinse and repeat.


Been quite a long time since this was answered, and my comment below here to 'not use RequireHttps' is probably a bit out of date.

Anyone looking at this answer and thinking that it answers their problem would probably be well advised to look into configuring their load balancer to use X-Forwarded-Proto headers:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto

And then setting up their MVC site to be able to read these and still think they are under HTTPS at the border of your environment:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?view=aspnetcore-6.0

like image 151
Paddy Avatar answered Sep 21 '22 20:09

Paddy