【问题标题】:Can a Client Link to My JavaScript, Hosted on a Different Domain?客户端可以链接到我的 JavaScript,托管在不同的域上吗?
【发布时间】:2010-03-26 17:33:28
【问题描述】:

我是否可以向客户端提供包含对我托管的 javascript 文件的引用的 HTML 的 sn-p?他们想将此 HTML 粘贴到他们的 CMS 中,这样当他们的页面加载时,它就会加载我们的内容。

我的印象是跨域安全性阻止了这种情况的发生。

如果我没有链接到 JavaScript,而是给了他们 HTML 的 sn-p,并且已经包含了 JavaScript,那会怎样

所以而不是

<div>
    <!-- link to js -->
</div>

我给了他们

<div>
    $.get(/*url to my content*/);
</div>

这行得通吗?

【问题讨论】:

  • 当你说“加载我们的内容”时,这个内容是 javascript,还是更多?

标签: javascript jquery html cross-domain


【解决方案1】:

您可以使用JSONP 模拟跨域AJAX 调用(仅适用于GET 请求,因为它在内部使用script 标记):

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
    function(data) {
        $.each(data.items, function(i,item) {
            $("<img/>").attr("src", item.media.m).appendTo("#images");
            if ( i == 3 ) return false;
        });
    }
);

【讨论】:

    【解决方案2】:

    我是否可以向客户提供 HTML 的 sn-p,其中包含对我托管的 javascript 文件的引用?

    是的。脚本元素的src没有同源限制。

    $.get(/*url to my content*/);

    XMLHttpRequests 仍然有相同的来源限制。 XHR 只能从 页面 的域中获取,而不能从脚本中获取。

    【讨论】:

      【解决方案3】:

      HTML &lt;script&gt; 标签不受同源策略的约束,因此如果您的客户端使用 &lt;script&gt; 标签链接到您的 JavaScript 文件,则不会有任何问题。 (Source)

      【讨论】:

      • @Daniel,谢谢,但我不确定你的意思 - 客户端使用
      【解决方案4】:

      引用来自不同域的 javascript 文件没有问题。这不是跨站点脚本,它只是一个跨站点 HTTP 请求。这被大量使用,例如由 Google 的 JavaScript API 加载器提供。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-08
        • 2021-12-05
        • 1970-01-01
        • 2015-03-21
        • 1970-01-01
        • 2020-04-27
        • 2012-10-05
        相关资源
        最近更新 更多