跨域请求和纯JavaScript

时间:2012-09-17 12:44:25

标签: javascript cross-domain jsonp

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

BBB.com抓取的javascript会从meta keywords中提取meta titleAAA.com,并将这些数据发送到特定网址{{1} }}

BBB.com网站将发送一个视频播放器的网址。

我想我会遇到问题,因为这显然是一个跨域请求,我想用BBB.com请求来解决,但问题是我们无法使用JSON-P

你会如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

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

此外,您的方案看起来根本不需要任何跨域请求。只需在您的AAA.com页面上显示类似<script src="http://BBB.com/script.js"></script>的内容,它就会起作用,因为<script>标记不会强加任何原点限制而且从未这样做过。使用动态创建的<iframe>和/或<form>标记将结果作为POST异步提交回BBB.com,或者使用src<img>,{<script> { {1}})将其作为GET提交。

答案 1 :(得分: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"});