【问题标题】:Crossdomain request and plain javascript跨域请求和纯 JavaScript
【发布时间】:2012-09-17 20:57:16
【问题描述】:

在网站AAA.com 上将包含来自网站BBB.com 的javascript,它必须是非阻塞执行脚本。

BBB.com 上抓取的javascript 将从AAA.com 中提取meta keywordsmeta title,并将这些数据发送到特定网址到网站BBB.com

BBB.com 网站将发回视频播放器的网址。

我想我会遇到问题,因为这显然是一个跨域请求,我想用 JSON-P 请求解决这个问题,但问题是我们不能使用 jQuery

请问你是怎么做到的?

【问题讨论】:

标签: javascript cross-domain jsonp


【解决方案1】:

来自 BBB.com 的第一个脚本必须解析关键字,将它们序列化为 URL 查询并动态创建第二个 <script> 标记以从 BBB.com 加载内容(这是您绕过 SOP 限制的方法)。

来自 BBB.com 的内容通常是对第一个知道如何使用内容的脚本中的某个函数的调用。

例如,第一个脚本可能看起来像

function showVideoPlayer(parameters) {
   // ...
}

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://bbb.com/crossdomain?'; // includes serialized meta keywords
// and now append script to e.g. the body so that the request is made

返回的内容是

showVideoPlayer({param1: "value1", param2: "value2"});

【讨论】:

    【解决方案2】:

    JSON-P 和 CORS 都与 jQuery 无关。这也恰好是用 Javascript 编写的库,因此永远不可能做任何 Javascript 本身不能做的事情。

    此外,您的方案看起来根本不需要任何跨域请求。只需在您的 AAA.com 页面上添加 <script src="http://BBB.com/script.js"></script> 之类的内容,它就会起作用,因为 <script> 标签不会施加任何来源限制,而且从未如此。使用动态创建的<iframe> 和/或<form> 标签以POST 或几乎所有src (<img>,<script>) 的形式将结果异步提交回BBB.com 以GET 提交.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-02
      • 2014-04-27
      • 2012-02-26
      • 2016-09-19
      • 1970-01-01
      • 2016-06-24
      • 2011-07-01
      • 2010-11-13
      相关资源
      最近更新 更多