【问题标题】:Showing full height content from another domain显示来自另一个域的全高内容
【发布时间】:2019-08-23 02:07:35
【问题描述】:

我正在尝试在我的网站上显示来自this page 的内容。

我尝试使用iframe,但我无法将其设置为页面的完整高度,因为我无权访问源网站。

我也尝试使用 PHP,但内容没有添加到网站,它来自一些 JSON 请求,并且不确定某些内容来自哪里。

我尝试向同一个 API 发送一些 CURL 请求:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://marketplace-packages-api-prod.apigateway.co/marketplace_packages.v1.MarketplacePackages/GetMultiPackages');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"packageIds":["SOL-BF4728A9A0EA4194A4BAB52CC816E7F9"]}');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');

$headers = array();
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:66.0) Gecko/20100101 Firefox/66.0';
$headers[] = 'Accept: application/json, text/plain, */*';
$headers[] = 'Accept-Language: en-US,en;q=0.5';
$headers[] = 'Referer: https://clients.sparqxp.com/';
$headers[] = 'Content-Type: application/json';
$headers[] = 'Origin: https://clients.sparqxp.com';
$headers[] = 'Dnt: 1';
$headers[] = 'Connection: keep-alive';
$headers[] = 'Cache-Control: max-age=0';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

但我没有获得页面的全部内容。

如何获得与页面全高相同的完整内容?

【问题讨论】:

  • 显示带有<iframe> 的代码,该代码试图达到全高。
  • <iframe src="https://clients.sparqxp.com/public/store/574N/default/package/SOL-BF4728A9A0EA4194A4BAB52CC816E7F9" height="100%" id="iframe"></iframe>
  • 我无法检测到 iframe 何时加载以赋予其内容高度
  • 是的,您没有设置正确的 iframe 大小。请发布您的 HTML 和 CSS 以及 MCVE。

标签: javascript php html ajax cross-domain


【解决方案1】:

有问题的网站是建立在 Angular 之上的,它加载一个基本的网页,然后使用 JavaScript 来填充页面。使用 CURL 只是在 JS 填充静态网页之前返回静态网页。 CURL 无法在相同程度上模拟浏览器。

您在 PHP 代码中使用的 URL 是纯粹用于返回 JSON 响应以供 Angular 应用程序使用并相应地填充网站的 URL。

【讨论】:

  • 那么有没有办法用PHP模拟浏览器,或者解决方案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多