How to open other web sites inside angular application

会有一股神秘感。 提交于 2020-05-25 07:42:46

问题


I am trying to load the other website where I will have a list of websites. If I click on the website link it has to open the website inside my angular application. Is there any option available in angular or anywhere that I can use to load the site where they restrict to load the sites

I have tried with HTML tag elements iframe, embed, object and jquery load functions to load the site. Some of the websites are opening and some sites restrict to open on other applications

<html>
<body>
<iframe src="https://stackoverflow.com" height="100%" width="100%"></iframe>
</body>
</html>

In angular

  <div >
    <iframe id="companyFrame" [src]="sourceURL | safe" class="frame"> 
    </iframe>
  </div>

  @Pipe({ name: "safe" })
  export class SafePipe implements PipeTransform {
  constructor(private sanitizer: DomSanitizer) {}
  transform(url) {
    return this.sanitizer.bypassSecurityTrustResourceUrl(url);
   }
  }

For example, I expect to load StackOverflow home page site but I got an error like Refused to display 'https://stackoverflow.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'. It is browser default options to restrict load the page in iframe if the site owner does not want to allow it. So I want alternative options instead of iframe


回答1:


'X-Frame-Options' are enforced by the owners/servers so that people cannot use their site as a in other sites using Iframe .

Think like a situation : if you launch google in iframe in your whole page , then you can use your url to serve google, you can do many more crazy things also .

There are some chorme/FF extension you can use it to bypass. But you cannot expect that your all users will be using that.

https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe




回答2:


Try DOM Sanitizing the element and add it with the help of div as innerHTML. So that you will have the wrapper div to control iframe.

FYI. https://angular.io/api/platform-browser/DomSanitizer




回答3:


Use window.open(). It's pretty straightforward !

In your component.html file-

<a (click)="goToLink("www.example.com")">page link</a>

In your component.ts file-

goToLink(url: string){
window.open(url, "_blank");
}

Instead of using "_blank" used "_self"




回答4:


You can try like this.

<object data="https://stackoverflow.com" width="600" height="400">
    <embed src="https://stackoverflow.com" width="600" height="400"/>
</object>



回答5:


basically the headers for a website are set in web server, if the headers 'X-Frame-Options' on files are set as sameorigin, you cannot load the site from any other origin.

'X-Frame-Options' is the header set to basically not allow anyone to load your website inside another website.

only thing you can do is, open the site in a new tab / window, or you can just redirect inside same app.



来源:https://stackoverflow.com/questions/56250358/how-to-open-other-web-sites-inside-angular-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!