我如何通过springboot从angular重定向

时间:2019-12-03 20:58:19

标签: java angular spring

我有进行重定向的后端springboot

    @RequestMapping(value = "/test/page", method = RequestMethod.POST)
    public @ResponseBody void getPage(@RequestBody custRequest req, HttpServletRequest request, HttpServletResponse response) {
   response.sendRedirect("https:www.google.com");
}

这样的服务电话

  getPage(user: User) {
        const bodyString = JSON.stringify(user);
        const header = new HttpHeaders({ 'Content-Type': 'application/JSON' ,
                                          'Accept' : 'text/html' });
        return this.httpclient.post('/test/page', bodyString, {headers: header, responseType: 'text'} );
  }

单击时按钮。

  onSubmit(user: User) {
    if (user && user.userID && user.password) {
      this.user.session = this.uuid;
      this.loginService.getLogin(user).subscribe(
        (res) => {
          console.log('post res');
          console.log(res);
        //  window.location.href = data.url; sanitizer
        this.data = this.sanitizer.sanitize(SecurityContext.HTML, res);
        },
        error => {
          console.log('Error', error);
            },
        () => {
          console.log('POST is completed');
        });

但是在结果页面中,我没有获得正确的登录页面。相反,我停留在同一页面上,控制台将打印

<!doctype html>
<html lang="en">
<head>
...

</html>

我的问题是如何显示实际内容?

1 个答案:

答案 0 :(得分:0)

简单地说,您的代码将获取google.com的源代码。我不确定这是您想要的行为,还是只希望浏览器重定向。请更详细地说明您要达到的目标。尽管不了解,但我会尽力回答。

要进行浏览器重定向,只需执行window.location.href =“ http://www.w3schools.com”;

如果您想获取一个页面并显示外部页面的内容,我认为iframe是最简单的方法。

如果响应是完整的html页面,因为它是无效的HTML(即html,head,body不能在主体内部),则不建议使用以下内容。它还可能会下载不必要的文件。

否则,请在angular组件中创建一个属性,我们将其命名为“ myHTML”。然后将其绑定到您创建的html元素的innerHTML属性

<div [innerHTML]="myHTML"></div>

然后,一旦您获取了URI(我建议直接将其-GET到最终URL,您做的方式很奇怪),只需将响应分配给“ myHTML”属性