在項目開發(fā)中遇到這樣一個問題,項目里用window.open打開了一個外鏈盖高,但是外鏈界面無法顯示听想,頁面有一個報錯的message提示。奇怪的是復制這個鏈接贱鼻,直接在瀏覽器地址欄粘貼宴卖,然后回車就可以正常打開。邻悬。症昏。
后來換了一種方法解決了,整體思路就是創(chuàng)建一個a標簽父丰,a標簽的href設(shè)置為此外鏈肝谭,然后插入到body里,執(zhí)行a標簽的點擊事件蛾扇,代碼如下:
const openWindow = (url) => {
let a = document.createElement("a");
a.setAttribute("href", url);
a.setAttribute("target", "_blank");
a.setAttribute("id", "ftm-link");
a.setAttribute("rel", "noreferrer");
document.body.appendChild(a);
a.click();
const aNode = document.getElementById("ftm-link");
if (aNode) {
document.body.removeChild(aNode);
}
}
這種方法就可以正常打開外鏈了攘烛。
后來又在網(wǎng)上看到一篇文章,是這么說的:
問題原因:
當點擊訪問頁面中外鏈地址時镀首,會產(chǎn)生一個http請求(用于獲取外鏈地址內(nèi)容)坟漱,此時出于安全策略(一些用戶信息或登錄信息會通過url傳遞),瀏覽器會在請求頭中添加一個referrer更哄,用來表示當前請求是從哪個頁面跳轉(zhuǎn)來的芋齿,也就是訪問來源腥寇。當外鏈網(wǎng)站對訪問做判斷時,于是會出現(xiàn)諸如403 Forbidden觅捆、The HTTP request is not acceptable for the requested resource.問題赦役。
解決方法:
在項目的index.html的<head>中加入如下<meta>代碼:
// index.html
<meta name="referrer" content="no-referrer" />