gpt4 book ai didi

javascript - 为什么无法在我的本地 apache2 服务器中加载 js 文件?

转载 作者:搜寻专家 更新时间:2023-11-01 04:12:39 24 4
gpt4 key购买 nike

在我本地域的网页中,两者都
jq.src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js";
jq.src = http://127.0.0.1/js/jquery-3.3.1.min.js
可以加载。

在stackoverflow的网页中,右击进入chrome的inspect--console。

const jq = document.createElement('script');
jq.src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js";
document.head.appendChild(jq);
jq.addEventListener('load', () => {
console.log("hello world");
console.log($ === jQuery);
});

可以加载远程jquery.js文件,现在用本地js文件替换它--http://127.0.0.1/js/jquery-3.3.1.min.js
为什么我本地的apache2加载不出来js文件?

enter image description here

最佳答案

您正在访问的站点可以应用 javascript 的安全策略 - 其中包括调试器。我认为您看到的是与您正在访问的网页相关联的内容安全策略的应用。

您可以在页眉中看到这一点。在 Chrome 中(如 explained here ),您可以查看随页面发送的 html header :

打开开发人员面板,选择“网络”选项卡,然后重新加载页面

对于 stackoverflow,在“stackoverflow.com”的“名称”列下查找 - 如果您最初是通过 http 加载的,则可能有两个,因此找到一个 https - 可能是第二个。单击那个,然后选择右侧的“标题”选项卡。您将在响应 header 中看到:

content-security-policy: upgrade-insecure-requests

这解释了here .

基本上,它告诉浏览器所有 http 请求都应该“升级”为 https。所以当你尝试访问http://127.0.0.1/...时,你的浏览器将请求升级为https://127.0.0.1/...,您的本地服务器可能无法处理。

这不仅限于 Chrome - 所有现代浏览器 should do this .

例如,我使用 Safari 浏览了一些网站,在某些情况下,收到一条错误消息,例如 GitHub :

Refused to load https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js because
it does not appear in the script-src directive of the Content Security Policy.

这是您可以阅读的另一种内容安全策略 here .

关于javascript - 为什么无法在我的本地 apache2 服务器中加载 js 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51943897/

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