2015-10-19 23 views
0

我試圖讓html2renderhttp://html2canvas.hertzen.com/)在我的網站上工作。它適用於基本的東西 - 但沒有任何圖像顯示(因爲它們在cdn.domain.com子域中)。正確的代理腳本爲html2canvas

我一直在閱讀,它似乎不喜歡其他域開箱即用。我發現一對夫婦的PHP腳本代理的:

我試圖讓那些打算,但我們沒有捲曲此服務器上啓用。所以,我正在用Perl編寫一些東西。

這裏是我到目前爲止有:

use MIME::Base64; 
use File::Slurp; 

handle(); 

sub handle { 

    print ('Access-Control-Max-Age:' . 5 * 60 * 1000); 
    print ("Access-Control-Allow-Origin: *"); 
    print ('Access-Control-Request-Method: *'); 
    print ('Access-Control-Allow-Methods: OPTIONS, GET'); 
    print ('Access-Control-Allow-Headers *'); 
    print ("Content-Type: application/javascript"); 

    #print $IN->header; 

    my $url = $IN->param('url'); 

    $url =~ s|https://cdn.xxx.net|/srv/www/xxx.net/www|g; 

    if (-e $url) { 

     my $file = read_file($url); 

     use JSON; 

     my $mime_type; 
     if ($url =~ /\.jpe?g$/i) { 
      $mime_type = "image/jpg" 
     } elsif ($url =~ /\.png$/i) { 
      $mime_type = "image/png" 
     } 
     print JSON::encode_json([{ 
      "pathinfo" => $url, 
      "error" => undef, 
      "data" => encode_base64($file), 
      "mime_type" => $mime_type 
     }]); 
    } else { 
     print "ACK!"; 
    } 

} 

但是,它仍然無法正常工作:(上有代理很少(沒有?)文檔(除了告訴您需要它在某些情況下!)

任何人都可以分享什麼輸出的數據應該看起來像?我試圖根據上面的示例代碼工作,但我的PHP有點生疏(我沒有PHP和捲曲服務器啓用了,我可以測試出來的)

謝謝!

回答

3

好吧,但是沒有那麼多的有關代理的答案 - 但我沒有碰到過一個帖子:

HTML2Canvas with CORS in S3 and CloudFront

在這裏,是顯示了使用的例子:

useCORS: true, 

...所以我試過:

html2canvas(document.body, { 
    useCORS: true, 
    onrendered: function(canvas) { 

    } 
});      

...它的工作原理!

在我的例子中,我只是使用domain.com和cdn.domain.com作爲CDN。如果您正在使用其他第三方CDN,您可能需要查看啓用CORs標頭。