miniflux-legacy/vendor/fguillot/picofeed/docs/image-proxy.markdown
2015-01-06 19:08:10 -05:00

1.7 KiB

Image Proxy

To prevent mixed content warnings on SSL pages served from your RSS reader you might want to use an assets proxy.

Images url will be rewritten to be downloaded through the proxy.

Example:

<img src="http://example.org/image.png"/>

Can be rewritten like that:

<img src="http://myproxy.example.org/?url=http%3A%2F%2Fexample.org%2Fimage.png"/>

Currently this feature is only compatible with images.

There is several open source SSL image proxy available like Camo. You can also write your own proxy.

Usage

There two different ways to use this feature, define a proxy url or a callback.

Define a proxy url

A proxy url must be defined with a placeholder %s. The placeholder will be replaced by the image source url encoded (RFC 3986). In PHP, the url can be decoded with the function rawurldecode().

$config = new Config;
$config->setFilterImageProxyUrl('http://myproxy.example.org/?url=%s');

Will rewrite the image source like that:

<img src="http://myproxy.example.org/?url=http%3A%2F%2Fexample.org%2Fimage.png"/>

Define a callback

Your callback will be called each time an image url need to be rewritten. The first argument is the original image url and your function must returns the new image url.

Here an example if your proxy need a shared secret key:

$config = new Config;

$config->setFilterImageProxyCallback(function ($image_url) {
    $key = hash_hmac('sha1', $image_url, 'secret');
    return 'https://mypublicproxy/'.$key.'/'.rawurlencode($image_url);
});

Will generate an image url like that:

<img src="https://mypublicproxy/4924964043f3119b3cf2b07b1922d491bcc20092/http%3A%2F%2Ffoo%2Fimage.png"/>