我正在尝试将图表作为图像加载到安全站点中。https 上的 Google 图表图像示例如下:
http://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld
问题是,虽然您可以通过直接单击链接来加载这样的图像,但您不能将其作为图像包含在您的页面中。它只是不会加载。
关于如何绕过这个的任何想法?还是一般使用PHP的解决方案?
我正在尝试将图表作为图像加载到安全站点中。https 上的 Google 图表图像示例如下:
http://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld
问题是,虽然您可以通过直接单击链接来加载这样的图像,但您不能将其作为图像包含在您的页面中。它只是不会加载。
关于如何绕过这个的任何想法?还是一般使用PHP的解决方案?
看起来谷歌终于更新了他们的 API 以允许 HTTPS。您需要做的就是将主机名切换为 chart.googleapis.com,以便基本 URL 类似于https://chart.googleapis.com/chart并且可以正常工作。享受!
Google 不支持基于 HTTPS 的图表...
我有同样的问题。
http://groups.google.com/group/google-chart-api/browse_thread/thread/95c463d88cf3cfe4
但是,您可以使用 PHP 或 .net 创建代理页面,以通过 HTTPS 连接过滤您的 google HTTP 链接以解决此类问题。
这是我用过的一个简单的 PHP 代理...
<?php
// PHP Proxy
// Loads a XML from any location. Used with Flash/Flex apps to bypass security restrictions
// Author: Paulo Fierro
// January 29, 2006
// usage: proxy.php?url=http://mysite.com/myxml.xml
$session = curl_init($_GET['url']); // Open the Curl session
curl_setopt($session, CURLOPT_HEADER, false); // Don't return HTTP headers
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); // Do return the contents of the call
$xml = curl_exec($session); // Make the call
header("Content-Type: text/xml"); // Set the content type appropriately
echo $xml; // Spit out the xml
curl_close($session); // And close the session
?>
看起来 google 正在阻止对具有 Referrer: 标头集的图表的 https 请求。
[tla ~]$ curl 'http://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld' 2>/dev/null | file -
/dev/stdin: PNG image, 200 x 125, 8-bit/color RGB, non-interlaced
[tla ~]$ curl 'https://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld' 2>/dev/null | file -
/dev/stdin: PNG image, 200 x 125, 8-bit/color RGB, non-interlaced
[tla ~]$ curl -H 'Referer: http://stackoverflow.com' 'http://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld' 2>/dev/null | file -
/dev/stdin: PNG image, 200 x 125, 8-bit/color RGB, non-interlaced
[tla ~]$ curl -H 'Referer: http://stackoverflow.com' 'https://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld' 2>/dev/null | file -
/dev/stdin: ASCII HTML document text, with very long lines