8.8. Invoking a CGI Program for Certain Content Types
Problem
You want to invoke a CGI program to act as a sort of content filter for certain document types. For example, a photographer may wish to create a custom handler to add a watermark to photographs served from his Web site.
Solution
Use the Action directive to create a custom handler, which will be implemented by a CGI program. Then use the AddHandler directive to associate a particular file extension with this handler:
Action watermark /cgi-bin/watermark.cgi AddHandler watermark .gif .jpg
Or if you really want to the server to select your handler based on the type of data rather than the name of the file, you can use:
Action image/gif /cgi-bin/watermark.cgi Action image/jpeg /cgi-bin/watermark.cgi
Discussion
This recipe creates a watermark handler that is called whenever a .gif or .jpg file is requested.
A CGI program, watermark.cgi, takes the image file as
input and attaches the watermark image on top of the photograph. The
path to the image file that was originally requested in the URL is
available in the PATH_TRANSLATED
environment variable, and the program needs to
load that file, make the necessary modifications, and send the
resulting content to the client, along with the appropriate HTTP
headers.
Note that there is no way to circumvent this measure, as the CGI program will be called for any .gif or .jpg file that is requested from within the scope to which these directives apply.
This same technique may be used to attach a header ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access