我有进行重定向的后端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>
我的问题是如何显示实际内容?
答案 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”属性