1

我对 JavaScript 如何加载外部库感到有些困惑。它是否对我在脚本标签中指定的 url 执行 GET 请求?浏览器是处理库的存储还是保存在 DOM 中的某个位置?

似乎浏览器在加载外部库时所做的大多数事情都会违反同源策略。从外部站点加载脚本时,现代浏览器是否有任何额外的安全性?是否可以加载外部库,然后将其源打印到屏幕上?

谢谢!

4

1 回答 1

2

我对 JavaScript 如何加载外部库感到有些困惑。

JavaScript 没有本地方式来加载库。这是宿主环境(例如浏览器或 node.js)提供的功能。

它是否对我在脚本标签中指定的 url 执行 GET 请求?浏览器是处理库的存储还是保存在 DOM 中的某个位置?

浏览器将发出 GET 请求,将脚本加载到视口的 JavaScript 环境中,但仅将 HTMLScriptElement DOM 节点保留在 DOM 中。

似乎浏览器在加载外部库时所做的大多数事情都会违反同源策略。

同源政策旨在保护第三方网站上的非公开数据。脚本不是数据(尽管它们可以被写入,因此它们在其中嵌入了数据,但 JSON-P 以此作为避免同源策略的一种方式)。

从外部站点加载脚本时,现代浏览器是否有任何额外的安全性?

是否可以加载外部库,然后将其源打印到屏幕上?

否(尽管您可以使用 XHR 发出单独的 HTTP 请求来获取脚本源 — 这受制于相同的源策略)。

于 2013-06-12T19:50:34.217 回答