[Angular] 要在專案中,開啟外部網站連結的方法
因為一般的windows.open(url) 用法
如果url非專案網站的同網址
就會因為同源政策(Same-origin policy)被擋住
所以要繞過
必須使用DomSanitizer
官網:https://angular.io/guide/security#xss
首先先引用
而chatGPT的回應
符合邏輯和語法
但是實際上無法這樣使用
chatGPT的回應(以下程式碼無法使用):
// 信任 URL
const trustedUrl = this.sanitizer.bypassSecurityTrustUrl(Url);
// 將 SafeUrl 轉換為字串
const urlString = trustedUrl.toString();
// 打開 URL
window.open(urlString);
實務上
要做以下調整
在windows.open() 裡面建立protocol和取得bypassSecurityTrustUrl()
這個object的內容
也可以寫成這樣
不然網址就會像是這樣
http://localhost:4200/SafaValue%20must%20user%20[property]=binging:%URL
提供摸索後的過程給大家
相關參考
https://stackoverflow.com/questions/41995986/changingthisbreaksapplicationsecurity-angular2
https://stackoverflow.com/questions/51559673/image-url-still-unsafe-after-i-use-domsanitizer
留言
張貼留言