我的服务器 A 中有一些客户数据。
我的客户拥有自己的服务器 B(我无法控制它)在其网页上显示一个 IFRAME(将其命名为原始页面),调用我的服务器 A 页面,该页面显示有关客户的一些信息。
例如,如果他们的原始页面是 www.serverB.com/theripage.php?var=asdfsddf 并且内部有 iframe,我可以使用 HTTP_REFERER 轻松访问变量 VAR 的内容。因此,实际上我可以显示他们需要的数据。
此设置有效,但对于需要在 url 中包含查询字符串的页面中启动请求的用户来说很复杂。
如何以其他方式将值传递到我的服务器?
如果客户删除 url 中的查询字符串并在其页面中编写此代码:
<iframe src=http://www.serverA.com/index.php?var=asdfsddf></iframe>
我无法访问同一域策略的 GET 值。
如果我尝试运行
$_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']
我只得到没有查询字符串的结果.....所以
http://www.serverA.com/index.php
有什么帮助吗?
我认为您需要将 http://www.serverA.com/index.php?var=asdfsddf
的输出包装在 iframe 中,首先在服务器 A(您的服务器)上。 使用 javascript 和/或 jQuery 让 iframe 的内容扩展到实际页面的宽度和高度。
内容中以获取iframe的src值(从您的服务器),javascript应该通过id
值(您应该为其定义)抓取框架并以这种方式获取url。
看看这个堆栈溢出问题中的答案:如何从父 url 或父 iframe 获取变量?
基本上,您要做的是,将结果的内容放在服务器上的iframe中,serverA
,而不是当他们将其放在serverB
上的iframe中时,实际上它将在2个iframe内。 您可以控制最里面的 iframe,即包含正在显示内容的 iframe。
在服务器上的 iframe 代码中,您可以使用代码(jQuery 和/或 javascript)使 iframe 完全扩展到它的内容,因此,甚至没有人会知道它在 iframe 中。
我会推荐CURL而不是iFrame。Iframe 不安全,数据很容易被篡改。
cURL 执行了 GET 请求来检索页面,但 cURL 也可以使用其他方法,例如 POST 和 PUT。
对于此示例,让我们模拟登录到网站。登录是通过向 http://example.com/login.php 发送具有以下详细信息的 POST 请求来完成的:
<?php
$postData = array(
'login' => 'acogneau',
'pwd' => 'secretpassword',
'redirect_to' => 'http://example.com',
'testcookie' => '1'
);
curl_setopt_array($ch, array(
CURLOPT_URL => 'http://example.com/login.php',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postData,
CURLOPT_FOLLOWLOCATION => true
));
$output = curl_exec($ch);
echo $output;
?>
您可以轻松地使用正则表达式来获取所需的数据。