Jquery 如果HTML文件通过file:///foo.html?

Jquery 如果HTML文件通过file:///foo.html?,jquery,cors,file-uri,Jquery,Cors,File Uri,我想在HTML文件中使用jquery,我使用文件:协议打开该文件,如下所示: file:///path/to/file.html 我在HTML中包括jquery,如下所示: <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"&g

我想在HTML文件中使用jquery,我使用
文件:
协议打开该文件,如下所示:

file:///path/to/file.html
我在HTML中包括jquery,如下所示:

<script
    src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>

我的浏览器(firefox)告诉我,CORS标题缺失:

如果我可以使用文件://中的HTML和CDN中的jquery进行开发,那就太好了


一个用例是教育。如果您可以创建一个HTML并通过
文件:
协议(从CDN加载jquery)对其进行测试,那么对于新手来说,最初的开销要低得多(至少我这么认为,但可能我遗漏了一些东西)。

如果您的问题是条目,那么就使用可用的众多FIDLE工具之一

有一个html、css和一个可以填写的jquery部分。它应该支持您需要的所有基本示例,以及一些高级示例。但既然我们谈论的是“入门级”,那么这应该足以说明您可以做什么。然后了解如何在本地或稍后在服务器上设置所有这些

您也可以只设置一台服务器,其中包含用户文件夹,用户文件夹也可以通过ftp本地上传,然后托管这些用户文件夹(但这需要您进行更多设置)

或者使用类似于主机的内容。让想要学习代码的学生参与到像github这样的平台中,对于探索和学习来说也是非常好的

更新: 在回答了他自己的问题后,我想知道这个答案的实际问题是什么:

  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous">
上述内容已添加到加载文件的标记中

这是加载外部资源时使用的安全功能,称为:

“完整性”属性的内容需要与加载的文件生成的哈希匹配,并且仅在代码和资源位于不同位置(跨源)时才使用。它保护您的站点不受第三方站点上更改的文件的影响

散列确保您期望的代码是从第三方加载的代码,如果它已更改(被黑客攻击),代码将不会在您的页面上执行

因此,在本地情况下,每次代码更改时,您都必须从文件内容生成一个新的哈希,并将其放入integrity属性中,如果资源位于同一位置,这实际上没有意义,因为攻击者可能只是修改您的站点,而不是实际的脚本文件

进一步更新: 如果您想从一个文件中测试一些东西,应该可以使用一个简单的html文件,如下面所示,它还可以从一个带有SRI的cdn加载脚本

<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.slim.js"
  integrity="sha256-fNXJFIlca05BIO2Y5zh1xrShK3ME+/lYZ0j+ChxX2DA="
  crossorigin="anonymous"></script>
</head>
<body>
<h1>Hello World!</h1>

<script type="text/javascript">
  $("body").append("<span>I was added from jquery script!</span>");
</script>

你好,世界!
$(“body”).append(“我是从jquery脚本添加的!”);


脚本是直接从提供的代码片段中复制/粘贴的,我添加了这个,只是因为jquery页面告诉我要这样做:

  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous">
我只想通过
文件://
和解决方案来测试我的HTML,包括jquery,问题的答案很简单:只要不使用
integrity=“…
,它就可以工作了

我的HTML现在包含以下内容:

 <head>
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

通过
file://
玩游戏也行

我看到jquery版本有很大的不同,但我现在不在乎


上面的HTML来自此页面:

“如果我可以使用file://和jquery进行开发,那就太好了。”您不能这样做。@KevinB为什么这不可能?从技术上讲,可以按您的要求执行。但它打开了一个相当大的安全漏洞。这是一个原因,它在默认情况下被禁用,并且只能通过标志启用(假设该标志仍然存在)我不建议在启用此标志的情况下浏览本地网络以外的任何内容。此方法要求在web浏览器上打开安全缓解开关,并在学生浏览web时告知他们所涉及的风险。在本地PC上安装和配置IIS更容易、更安全,并且对他们来说是一种更有用的体验同学们,伊姆霍。@KevinB你们说这是不可能的。效果很好。请看我的回答:我很好奇。你们为什么认为这是不可能的?十次否决后的第一个建设性建议。谢谢你们的回答!@guettli我在这次更新中对你们面临的问题做了一些阐述。@Jimwallf你们写道”因此,在本地情况下,每次代码更改时,都必须从文件内容生成新的哈希"。我听不懂。我想加载jquery。我不修改jquery。我不明白为什么我应该生成新的哈希。@guettli correct,因此在本地使用子资源完整性是没有意义的,或者在脚本物理位置与调用它的html位于同一位置的任何地方。如果您我们将使用它。是的,它没有意义。但是“为什么不”?我想通过file:///. 强制删除integrity=“sha256-…”没有任何意义属性。您的问题之一可能还在于完整性链接本身,因为我在检查jquery的cdn时得到的链接是:
哈希与上面的hashnevermind不同,我将您的新代码与前一个代码(jquery.3.1)进行比较,这确实给出了正确的哈希: