One use of ISAPI filters is to modify a response header before IIS sends it to the client. For example, you might want to modify the expires value. The following code illustrates how to accomplish this.
BOOL WINAPI GetFilterVersion(PHTTP_FILTER_VERSION pVer)
{
pVer->dwFilterVersion = HTTP_FILTER_REVISION;
lstrcpy(pVer->lpszFilterDesc, "Filter Template");
pVer->dwFlags = SF_NOTIFY_ORDER_DEFAULT | SF_NOTIFY_URL_MAP;
return TRUE;
}
DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc, DWORD NotificationType, LPVOID pvNotification)
{
HTTP_FILTER_URL_MAP *pUrlMap = (HTTP_FILTER_URL_MAP *)pvNotification;
LPSTR szPtr1;
// Find the extension of the requested file
szPtr1 = strrchr(pUrlMap->pszPhysicalPath, '.');
// If this is a JPG, add an expires header
if (szPtr1)
{
szPtr1++;
if (!lstrcmpi(szPtr1, "jpg"))
pfc->AddResponseHeaders(pfc, "Expires: 0\r\n", 0);
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
For a complete working sample program that modifies a response header, see Developer Samples.