gpt4 book ai didi

javascript - 通过动态创建的脚本标签异步加载 JavaScript 的 CORS 问题

转载 作者:行者123 更新时间:2023-11-28 01:35:25 24 4
gpt4 key购买 nike

像下面这样动态创建脚本将异步下载 JavaScript 源代码。

var script = document.createElement('script');
script.src = src_url;
var first_script = document.getElementsByTagName('script')[0];
first_script.parentNode.insertBefore(script, first_script);

在幕后创建了什么类型的请求对象? XMLHttpRequest 对象用于与 AJAX 进行异步数据交换。它是用于使用动态脚本标签加载异步脚本的同一个对象吗?如果是这样,CORS(跨源资源共享)问题是否也适用于此?

最佳答案

XMLHttpRequest objects are used for asynchronous data exchange with AJAX. Is it the same object used for asynchronous script loading with dynamic script tags?

不,浏览器只是像加载脚本一样加载它们。

If so, does the CORS(Cross Origin Resource Sharing) issue applies here too ?

没有。 CORS 适用于 XHR 调用和跨域访问,不适用于通过脚本标签加载脚本。这就是为什么 JSONP有效。

当您将 JavaScript 加载到页面中时,无论您从何处加载它,它都在加载它的页面的安全上下文中运行。例如,如果您在 http://example.com/foo.html 有一个页面,它从 http://ajax.googleapis.com/ajax/libs 加载脚本/jquery/1.11.1/jquery.min.js,很好(谷歌和微软等 CDN 就是这样工作的,允许我们从那里而不是从我们自己的服务器加载公共(public)库)。如果该脚本加载的代码尝试执行 XHR 调用,则适用的来源是 http://example.com,而不是 http://ajax.googleapis.com .同样,如果该脚本试图从另一个来源访问窗口(可能 http://example.com 页面中有一个来自 http:/的 iframe/somewhereelse.com),再次适用的来源是 http://example.com,因此跨来源脚本访问被拒绝。

关于javascript - 通过动态创建的脚本标签异步加载 JavaScript 的 CORS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28539320/

24 4 0