Did you find a working solution for this? I am responding to also bring this topic back to the top of the list in the API area.
I did find a solution that works for AngularJS, which you can find here: GitHub - dougmoscrop/angular-img-http-src
However after the issue was resolved, it was found out that the preview images are only roughly 100x100 thumbnails which isn't what I was going for. Instead, I ended up using a Tableau command line utility called tabcmd.exe which you can learn about here: Tabcmd Examples | Tableau Software. This was done by having a server setup for which my app communicates to (NodeJS in my case). When an image is requested, the server runs the appropriate CLI command for tabcmd to generate an exact copy of a Tableau visualization as an image, send it out, then clean it up.
With this route, I was able to retrieve the image on my app and resize it to however I see fit - and without using the above AngularJS work around.
In newer versions of the API, you can also use the 'image' method rather than the 'previewImage' method, which will give you a full screenshot rather than a cropped thumbnail.
e.g. instead of:
you can use: