Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

response redirection(302) not work in angular

Tags:

I Designed a login page for SSO(Single Sign-On) by angular and the services for login developed separately by spring boot framework.

In the angular app, when submitted login form, login service call with post-HttpMethod by HttpClient module. In login service if username and password be correct then in the result of login service, set response status to 302 and add a specific URL to the header of the response. in this scenario I expect to browser redirect to specific URL, but this is not happening.

I trace request and response in Firefox as the same as the attached picture Firefox network tab.

  1. Send a post-login request, and response of it is 302 and header location is a specific URL that set in the server response
  2. The browser sends an option request to location URL of response header and gets 200 result
  3. The browser sends a get request to target URL(header location is specific URL), at this point browser is not opening target URL, and the just response is 200.

I change the Location header of response, and saw that the redirection is not doing(just login request and option request done), below picture is request trace. Firefox network tab

like image 844
Mohammad Sadegh Rafiei Avatar asked Apr 11 '19 20:04

Mohammad Sadegh Rafiei


People also ask

How do I fix status 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.

Does XMLHttpRequest follow redirect?

Using a XMLHttpRequest in async mode, the redirects are followed and it works as expected,; but in synchronous mode it fails.

What is a 302 code?

What is an HTTP 302? The 302 status code is a redirection message that occurs when a resource or page you're attempting to load has been temporarily moved to a different location. It's usually caused by the web server and doesn't impact the user experience, as the redirect happens automatically.


1 Answers

I suspect your requests are XHR requests. If so, the browser follows them in the handler but won't navigate the full page to the redirect location.

If you want to emulate what happens when a redirect is sent for a full page request, you may want to change your backend so that it returns a 200 with the target location of the original redirect in the payload, and then reload the page to that location (something like window.location = payload.redirectLocation).

You can also get rid of the redirect, let the backend return 200 or 401 depending on the authentication success, then navigate with the angular router.

like image 55
David Palita Avatar answered Oct 12 '22 19:10

David Palita