我的服务器A中有一些客户数据。
我的客户使用他们自己的服务器B(我无法控制)在他们的网页上显示一个IFRAME(命名为原始页面),调用我的服务器一个显示客户信息的页面。
如果他们的原始页面是例如www.serverB.com/theripage.php?var=asdfsddf并且内部有iframe,我可以使用HTTP_REFERER轻松访问变量VAR的内容。 因此,我实际上可以显示他们需要的数据。
此设置有效,但对于需要在URL中具有查询字符串的页面中启动请求的用户来说很复杂。
如何以其他方式将值传递给我的服务器?
如果客户删除了网址中的查询字符串,并在其页面中写下此代码:
<iframe src=http://www.serverA.com/index.php?var=asdfsddf></iframe>
我无法访问相同域策略的GET值。
如果我尝试运行
$_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']
我只得到没有查询字符串的结果.....所以
任何帮助?
答案 0 :(得分:0)
我认为您需要在serverA(您的服务器)上将http://www.serverA.com/index.php?var=asdfsddf
的输出包装在iframe中。使用javascript和/或jQuery将iframe的内容扩展到实际页面的宽度和高度。
然后将javascript放在iframe内容中以获取iframe的src值(来自您的服务器),javascript应该抓取id
值的帧(您应该为它定义)并获取网址那样。
请查看此stackoverflow问题中的答案:How to get variable from parent url or parent iframe?
基本上,您要做的是将结果的内容放在服务器上的iframe serverA
上,而不是将它们放在serverB
上的iframe中时,它会是现实中2个iframe内。您可以控制最里面的iframe,即iframe中显示的内容。
在服务器上的iframe代码中,你可以使用代码(jQuery和/或javascript)来使iframe完全扩展到它的内容,因此,没有人会在iframe中知道它开始。
答案 1 :(得分:0)
我会推荐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;
?>
您可以轻松使用正则表达式获取所需数据。