我们有一个基于Angular 2的Web应用程序,它从安全的REST-API中检索数据。
在第一次REST-API请求时,它将返回一个带有重定向(302)响应的URL,用于启动GET请求。 Angular 2不会自动重定向到此URL,并且请求失败。 请注意,使用集中式身份验证系统已完成对REST-API的登录,并且此重定向不需要显示登录页面并从用户获取输入。它只需要调用GET请求。
我们如何向提供的重定向URL(来自HTTP:302响应)发起GET请求并自动检索数据?
如果我们从浏览器转到REST-API调用,它将自动重定向到给定的URL并返回数据。
用于启动REST-API调用的Angular源
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { Response, Headers, RequestOptionsArgs, URLSearchParams, RequestOptions } from '@angular/http';
this.http.get(url, options)
.subscribe(
(response: Response) => {
// handle response
},
(error: any) => {
//handle error
}
);
浏览器控制台错误
答案 0 :(得分:0)
我目前面临着同样的问题,尽管原因不同。我有多个微服务,并且正在使用路由器,因此角度前端只需要了解该路由器。现在,当角度前端需要特定的微服务时,我只需要调用路由器然后将重定向返回到正确的微服务。这样做的好处是前端只需要了解一个微服务,我可以自由添加,删除,重命名等其他微服务。
这意味着我的路由器微服务几乎可以为所有内容返回307响应。我在角度方面实现它的方法是仅测试此HTTP状态代码的响应。如果我得到307,我知道它是我的路由器重定向。然后我可以请求位置标题并将我的请求重新发送到该位置。
我认为这对您来说完全相同,只需测试您的重定向HTTP状态代码的响应。如果您获得其中一个重定向代码,请从响应标头中获取位置,然后将请求重新发送到该位置。