【问题标题】:Cross domains variables iframe in PHPPHP中的跨域变量iframe
【发布时间】:2016-11-12 03:44:30
【问题描述】:

我的服务器 A 中有一些客户数据。

我的客户拥有自己的服务器 B(我无法控制它)在他们的网页上显示一个 IFRAME(将其命名为原始页面),调用我的服务器 A 页面来显示有关客户的一些信息。

如果他们的原始页面是例如 www.serverB.com/theripage.php?var=asdfsddf 并且里面有 iframe,我可以使用 HTTP_REFERER 轻松访问变量 VAR 的内容。 因此,实际上我可以显示他们需要的数据。

此设置有效,但对于需要在页面中使用 url 中的查询字符串启动请求的用户来说很复杂。

如何以其他方式将值传递给我的服务器?

如果客户删除url中的querystring,并在他的页面中写下这段代码:

<iframe src=http://www.serverA.com/index.php?var=asdfsddf></iframe> 

我无法访问同一域策略的 GET 值。

如果我尝试运行

$_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']

我只得到没有查询字符串的结果.....所以

http://www.serverA.com/index.php

有什么帮助吗?

【问题讨论】:

  • 你试过$_SERVER['QUERY_STRING']吗?

标签: php javascript jquery html iframe


【解决方案1】:

我认为您需要将http://www.serverA.com/index.php?var=asdfsddf 的输出包装在一个 iframe 中,然后在 serverA(您的服务器)上开始。使用 javascript 和/或 jQuery 将 iframe 的内容扩展到实际页面的宽度和高度。

然后将 javascript 放在 iframe 内容中以获取 iframe 的 src 值(从您的服务器),javascript 应该通过 id 值(您应该为它定义)获取框架并以这种方式获取 url .

看看这个stackoverflow问题的答案:How to get variable from parent url or parent iframe?

基本上,您要做的是将结果的内容放在服务器上的 iframe 中,serverA,而不是将其放在 serverB 上的 iframe 中,它将在 2 个 iframe 中现实。您可以控制最里面的 iframe,它是其中显示内容的 iframe。

在您服务器上的 iframe 代码中,您可以使用代码(jQuery 和/或 javascript)使 iframe 完全扩展到其内容,因此,甚至没有人会知道它一开始就在 iframe 中。

【讨论】:

  • 谢谢。实际上,解决方案是在服务器 B 中使用 2 个框架,但他们需要创建一个带有框架本身的页面,以便由另一个框架调用,该框架在 url 中带有查询字符串。我试图避免要求客户创建一个额外的页面......我会检查你的解决方案。谢谢
【解决方案2】:

我会推荐 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;
?>

您可以轻松地使用正则表达式来获取所需的数据。

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 2012-10-22
    • 1970-01-01
    • 2017-12-24
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    相关资源
    最近更新 更多