我们有一个基于角度2的web应用程序,它从安全的REST中检索数据.
在第一个REST请求时,它将返回一个带有重定向(302)响应的URL,用于启动一个GET请求。角2不会自动重定向到这个URL,请求失败。请注意,REST的登录已经使用集中式身份验证系统完成了,此重定向不需要显示登录页面并从用户那里获取输入。它只需要调用GET请求。
我们如何对提供的重定向URL(来自HTTP:302响应)发起GET请求并自动检索数据?
如果我们从浏览器转到REST-API调用,它将自动重定向到给定的URL并返回数据。
启动REST-API调用的角源
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
}
);浏览器控制台错误

请求和答复

我想出了解决方案,因为限制发生在跨原点限制。我通过使用相同的主机名访问所有东西来解决这个问题。
发布于 2017-03-22 17:10:10
我目前也面临着同样的问题,尽管原因不同。我有多个微服务,并且正在使用一个路由器,所以角的前端只需要知道那个路由器。现在,当角前端需要一个特定的微服务时,我只调用路由器,然后返回一个重定向到正确的微服务。这样做的好处是,前端只需要了解一个微服务,而我可以自由地添加、删除、重命名等其他微服务。
这确实意味着我的路由器微服务返回307个响应几乎所有东西。我在角度方面实现它的方式是测试这个HTTP状态代码的响应。如果我得到307,我知道这是我的路由器重定向。然后我可以请求位置标头并将我的请求重新发送到该位置。
我想这对您来说是完全一样的,只需要测试您的响应以获得重定向HTTP状态代码。如果获得一个重定向代码,则从响应头获取位置,并将请求重新发送到该位置。
https://stackoverflow.com/questions/42018125
复制相似问题