gpt4 book ai didi

Javascript 捕获混合内容错误以优雅处理

转载 作者:行者123 更新时间:2023-12-04 11:58:08 25 4
gpt4 key购买 nike

有没有办法全局捕获混合内容错误?

明确一点:我不想允许不安全的内容,我想做的就是优雅地处理错误。

背景故事:我正在集成程序化广告,也就是说我必须包含一些脚本标签,它会返回更多的 JavaScript,它可以加载更多的资源,等等......

我无法控制访问我网站的内容,有时这些资源包括 http 资源,这会引发混合内容错误。然后我留下一个空的广告容器,看起来有点难看。另外,我可以尝试转售这个广告空间,因为第一次尝试失败了。

我已经尝试过window.onerror,但无济于事。

最佳答案

无法捕获混合内容警告,因为它们与 JavaScript 无关,而是由您的浏览器处理。
你可以做的是使用 Upgrade-Insecure-Requests header 以防止浏览器完全加载不安全的内容。而且,根据您的用例,您可以使用 MutationObserver对 HTML 中的更改使用react,或收听 document.body 上的错误事件在捕获阶段对错误使用react:

<html>
<head>
<meta
http-equiv="Content-Security-Policy"
content="upgrade-insecure-requests"
/>
</head>

<body>
<script>
const el = document.createElement("img");
el.src = "http://unsafeimg";
document.body.appendChild(el);
document.body.addEventListener(
"error",
(err) => {
console.log("Failed to load\n", err.target);
},
/* Notice the true value here. It is required because Error Events do not bubble */
true
);
</script>
</body>
</html>

另一种选择是设置 Service Worker拦截和处理不安全的请求。这可能是最好的解决方案,因为这可以让您全面了解您的网站尝试加载的数据。

关于Javascript 捕获混合内容错误以优雅处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45327932/

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