3

我正在尝试将图表作为图像加载到安全站点中。https 上的 Google 图表图像示例如下:

http://www.google.com/chart?cht=lc&chs=200x125&chd=s:helloWorld

问题是,虽然您可以通过直接单击链接来加载这样的图像,但您不能将其作为图像包含在您的页面中。它只是不会加载。

关于如何绕过这个的任何想法?还是一般使用PHP的解决方案?

4

3 回答 3

8

看起来谷歌终于更新了他们的 API 以允许 HTTPS。您需要做的就是将主机名切换为 chart.googleapis.com,以便基本 URL 类似于https://chart.googleapis.com/chart并且可以正常工作。享受!

于 2011-01-19T19:47:48.520 回答
5

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
?>
于 2010-03-20T06:39:12.190 回答
4

看起来 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
于 2010-03-20T06:33:39.223 回答