【问题标题】:How to use a php proxy to load a site into a iframe?如何使用 php 代理将网站加载到 iframe 中?
【发布时间】:2015-09-10 09:19:44
【问题描述】:

我尝试将我在 URL 中设置的随机页面加载到 iframe 中。假设我尝试在 iframe 中加载“https://www.google.de”。

<iframe src="<?php echo $_GET['URL'];?>" width="600" height="500"></iframe>

这是我设置 URL 的方式:

localhost/test/index.php?URL=https://www.google.de

只加载一个空白页面。我知道这样做的原因是 Google 正在发送“X-Frame-Options: SAMEORIGIN”响应标头。

但是,无论如何,我尝试找到一种加载它的方法,有人告诉我使用 PHP 代理脚本来执行此操作,但我研究并发现没有任何帮助。

我该如何解决这个问题?

【问题讨论】:

  • 您可能希望使用现代方式而不是使用&lt;iframe&gt;
  • 你能告诉我更多吗?我在哪里可以学到更好的方法?
  • PHP代理是一种方式,只是像XHook这样的JS代理是另一种方式
  • 你说&lt;iframe&gt;已经过时了,那么现代的替代品是什么?
  • iframe 当然正在淡出。

标签: javascript php html iframe web


【解决方案1】:

如果您在任何代理服务器后面并希望使用代理 url、域、用户名、密码的身份验证绕过它,请使用此脚本取消注释代理行。

我使用了header("Access-Control-Allow-Origin: *");,因为我是从不同的域调用此脚本。

文件:proxyscript.php

<?php
    header("Access-Control-Allow-Origin: *");

    echo get_page($_GET['url']);
    //echo get_page("http://www.google.com");
    function get_page($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        /*
        $proxy = 'http://proxy.company.com:8080';
        $proxyauth = 'domain\proxy_username:proxy_password';
        curl_setopt($ch, CURLOPT_PROXY, $proxy);
        curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
        */
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
?>

文件:index.html

<html>
    <head>
        <script>
            function getURL(url){
                document.getElementById('frame').src 
                   = 'path/to/proxyscript.php?url='+encodeURIComponent(url);
            }
        </script>
    </head>
    <body>
        <button onclick="getURL( 'http://www.google.com')">Google</button>
        <iframe id="frame" src=""></iframe>
    </body>
</html> 

【讨论】:

  • 这将打开谷歌,但我如何在 iframe 中打开它?
  • $url = $_GET['URL']; 开头,对于iframe 源使用localhost/test/proxy.php?URL=https://www.google.de。当然,URL参数应该是encoded:https%3A%2F%2Fwww.google.de
  • 按钮方法有效,谢谢!但我尝试在不按按钮的情况下加载 iframe。我需要通过 URL 中的 GET 方法获取url
  • 当您将其作为参数传递时,您需要对 url 进行转义。使用一些 php 对 arc 属性中的 url 进行编码
  • 这是用于 HTTP 我不知道如何加载 https。也许你可以用谷歌搜索一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 2020-02-10
相关资源
最近更新 更多