Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 响应重定向(302)在角度模式下不工作_Angular_Rest_Httprequest - Fatal编程技术网

Angular 响应重定向(302)在角度模式下不工作

Angular 响应重定向(302)在角度模式下不工作,angular,rest,httprequest,Angular,Rest,Httprequest,我为angular的SSO(单点登录)设计了一个登录页面,并为spring boot framework单独开发的登录服务设计了一个登录页面 在angular应用程序中,当提交登录表单时,HttpClient模块使用PostHttpMethod调用登录服务。在登录服务中,如果用户名和密码正确,则在登录服务的结果中,将响应状态设置为302,并将特定URL添加到响应的标题中。在这个场景中,我希望浏览器重定向到特定的URL,但这并没有发生 我在Firefox中跟踪请求和响应,与所附图片相同 发送登录

我为angular的SSO(单点登录)设计了一个登录页面,并为spring boot framework单独开发的登录服务设计了一个登录页面

在angular应用程序中,当提交登录表单时,HttpClient模块使用PostHttpMethod调用登录服务。在登录服务中,如果用户名和密码正确,则在登录服务的结果中,将响应状态设置为302,并将特定URL添加到响应的标题中。在这个场景中,我希望浏览器重定向到特定的URL,但这并没有发生

我在Firefox中跟踪请求和响应,与所附图片相同

  • 发送登录后请求,其响应为302,头位置是服务器响应中设置的特定URL
  • 浏览器向响应头的位置URL发送一个选项请求,并获得200个结果
  • 浏览器向目标URL发送get请求(标题位置是特定的URL),此时浏览器未打开目标URL,仅响应为200

  • 我更改了响应的位置头,看到重定向没有执行(只是登录请求和选项请求完成),下图是请求跟踪。

    我怀疑您的请求是XHR请求。如果是这样,浏览器将在处理程序中跟随它们,但不会将整个页面导航到重定向位置

    如果要模拟发送重定向以请求整页时发生的情况,可能需要更改后端,使其返回一个200,其中包含负载中原始重定向的目标位置,然后将页面重新加载到该位置(类似于
    window.location=payload.redirectLocation


    您还可以取消重定向,让后端根据身份验证成功情况返回200或401,然后使用angular router导航。

    重定向自动发生,您可以在网络跟踪中的调用中看到它。正如我所说,如果它们是XHR请求,它们不会重新加载页面,您无法解决这个问题,这就是浏览器的工作方式。XHR是可以并行执行的异步请求。。。如果它们中的几个发送重定向,并且浏览器每次收到302时都重新加载,会发生什么情况?