gpt4 book ai didi

javascript - Angular2 中 IFrame 的跨域问题

转载 作者:行者123 更新时间:2023-11-30 14:54:40 25 4
gpt4 key购买 nike

我们打算访问托管在同一台机器上但在不同端口上的另一个应用程序 url。所以我的 Angular 2 应用程序 http://localhost:8081/app/ 试图打开一个托管在同一服务器但端口不同的站点,即 localhost:9100

We are trying to access following url in an iframe
url = http://localhost:9100/custom/getCustomPage

<iframe id="customFrame" *ngIf="url !== null" frameborder="0" [src]="url"></iframe>

Error on Chrome/Firefox DOMException: Blocked a frame with origin "http://localhost:9100" from accessing a cross-origin frame. at http://localhost:9100/custom/getCustomPage Where Host:localhost:9100 Referer:http://localhost:8081/app/

我已将以下 header 添加到响应过滤器:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:X-Requested-With, Content-Type
Access-Control-Allow-Methods:GET, POST, DELETE, PUT
Access-Control-Allow-Origin:*
Access-Control-Expose-Headers: content-length, Allow

请帮我确定一个解决方法,以便 iFrame 允许显示结果。

这目前在 IE 11 中运行良好。

最佳答案

您必须使用 Dom sanitizer 将您的 URL 作为受信任的 url 返回以绕过安全性。以下是您可以执行的操作:

在您的 html 中:

<iframe [src]='getSourceURL()'></iframe>

... 在您的 typescript 中:

import { DomSanitizer } from '@angular/platform-browser';

@Component({
....
})
export class YourComponent {

yourIFrameUrl: string;
constructor(public sanitizer: DomSanitizer) { }

getSourceURL() {
return this.sanitizer.bypassSecurityTrustUrl(this.yourIFrameUrl);
}
}

关于javascript - Angular2 中 IFrame 的跨域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47508270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com