在返回结果之前脚本注入并进行ajax调用

时间:2014-03-04 00:40:05

标签: javascript php jquery ajax xss

尝试一些有点复杂的事情,我希望这是可能的,或者有人可能建议一种方法来做。

在网站A上我有一个包含预订信息的数据库。

在网站B上,我想在这些预订发生时向人们展示。

所以在网站A上我创建了一个php页面,它获取所有数据并将其放入JSON。

然后我创建一个js脚本来运行对该php页面的ajax调用,返回信息并使用javascript创建一个表,并在调用脚本的任何地方构建它。

有点像推特的小部件。

现在我要做的是,有几行代码粘贴到站点B,它调用站点A上的js脚本,运行ajax命令,然后获取数据,创建我提到的表并放置它在现场B。

这可能吗?在将脚本传递给站点B之前,脚本是否会在站点A上进行ajax调用?或者它是否能够进行ajax调用,因为它首先放在站点B上,我不能从站点B调用站点A?

1 个答案:

答案 0 :(得分:1)

这是有可能的,但方式与你建议的有点不同。

首先回答您的问题:当您在站点B上包含来自站点A的“数据获取器”脚本时,它将在站点B上执行。它将尝试对站点A执行ajax调用,并且因为相同而失败 - 原产地政策。

实现此目的的方法是通过JSONP

您需要先创建一个php页面,它会生成一些json数据并调用预定义的javascript函数,如:

<强> fetcher.php:

<?php
$data = fetchCustomerBookings($_GET['customerid']);
echo "renderBookings(".json_encode($data).")";
?>

然后,您可以在站点B上包含此脚本,其中包含一个普通的脚本标记,如:

<script type="text/javascript" src="http://site-a.com/fetcher.php?customerid=XXX"></script>

你需要已经定义了renderBookings javascript函数。