Chrome 客户端浏览器安全性:文件URL VS URL链接

zz2j4svz  于 2023-05-11  发布在  Go
关注(0)|答案(1)|浏览(209)

指向文件的URL(例如:“https:domain.com/path/to/invoice.pdf“)VS页面的URL(例如“https://domain.com/path”)?

  • 问题:*

在Mozilla中,一切都很好,但Chrome阻止重定向错误ERR_BLOCKED_BY_CLIENT和Safari打开一个空白页面。我尝试的代码示例:
1.

window.open(linkToOpen, "_blank");
const a = document.createElement("a");
a.style.display = "none";
a.href = linkToOpen;
a.download = "file.pdf";
a.target = "_blank";
document.body.appendChild(a);
a.click();
a.remove();

Chrome中没有安装插件。也尝试了隐姓埋名模式-同样的问题。链接可以工作,但指向文件的链接不行。

n3ipq98p

n3ipq98p1#

问题已部分解决。仅适用于Chrome(不适用于Safari),.pdf将在新窗口中打开。
据我所知,这是一个与.pdf URL相关的问题。
解决方案:

const tempElement = document.createElement("a");
tempElement.style.display = "none";
tempElement.setAttribute("href", linkToOpen);
tempElement.setAttribute("target", "_blank");
document.body.appendChild(tempElement);
    
// please note,
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
// but needs to check if window.opr is not undefined
// and new IE Edge outputs to true now for window.chrome
// and if not iOS Chrome check
// so use the below updated condition
const isChromium = window.chrome;
const winNav = window.navigator;
const vendorName = winNav.vendor;
const isOpera = typeof window.opr !== "undefined";
const isIEedge = winNav.userAgent.indexOf("Edg") > -1;
const isIOSChrome = winNav.userAgent.match("CriOS");
const isWindowsChrome = isChromium !== null && 
    typeof isChromium !== "undefined" && 
    vendorName === "Google Inc." && 
    isOpera === false && 
    isIEedge === false;

if (isIOSChrome || isWindowsChrome) {
    // is Google Chrome
    tempElement.dispatchEvent(new MouseEvent("click", {
        shiftKey: true,
    }));
} else {
    // not Google Chrome
    tempElement.click();
}
tempElement.remove();

MichałSzarek从下面使用的最后一个链接

tempElement.dispatchEvent(new MouseEvent("click", {ctrlKey: true}));

但这对我不起作用我尝试了shiftKey:真瞧!
我不明白为什么这样做的工作,很有兴趣的解释。
我使用的几个链接:
https://csplite.com/csp/test324/#bug_Chrome_iframe_PDF https://groups.google.com/a/chromium.org/g/security-dev/c/Abvu9qL-nzk

相关问题