in reply to Sending an image to a browser

The 1999 HTML standard made the alt attribute for <img> non-optional. The Location header in HTTP must be an absolute URL, you are providing a relative URL. Neither of these are likely to be the cause of your problem as most browsers can error correct, but its still worth fixing the mistakes.

What does $in{image} contain? Have you checked it contains what you expect? Putting warn $in{image} directly after you populate it might help in your debugging.

What happens if you try to access the image directly? If you are redirecting to an image file stored under cgi-bin you might encounter problems if the server expects it to be an executable file.

Exactly what HTTP headers are being output? You can look at them using lynx with something like lynx -dump -head http://www.example.com/cgi-bin/my.cgi?image=images/some.jpg.

If you visit http://www.example.com/cgi-bin/my.cgi?image=images/some.jpg in your webbrowser, does it get visibly redirected? (i.e. does the URL in the addressbar change?)

Replies are listed 'Best First'.
Re^2: Sending an image to a browser
by Joost (Canon) on Apr 19, 2005 at 11:16 UTC
    The Location header in HTTP must be an absolute URL, you are providing a relative URL.
    In most CGI implemenations (or at least, Apache), a "root-relative" url in a location header is interpreted by the webserver as an "internal redirect" - i.e. the server will return the content at that url, without informing the client.

    What I think is wrong is that in most server configurations it's not allowed to have anything but executables in the /cgi-bin/ location - that means the images should be put somewhere else.