Pete Freitag Pete Freitag

If-Modified-Since and CFML Part II

coldfusion

Now that you know how handle HTTP requests with the If-Modified-Since header in ColdFusion, lets take a look at how you might write a HTTP client using CFHTTP that sends If-Modified-Since headers:

<cfset lastCheckDate = GetHttpTimeString(DateAdd("d", -7, Now()))>
<cfhttp url="https://www.petefreitag.com/rss/" method="get" >
	<cfhttpparam type="header" name="If-Modified-Since" value="#lastCheckDate#">
</cfhttp>

<cfif cfhttp.responseheader.status_code EQ 304>
	<h1>Content HAS NOT Changed since <cfoutput>#lastCheckDate#</cfoutput></h1>
<cfelseif cfhttp.responseheader.status_code EQ 200>
	<h1>Content has changed since <cfoutput>#lastCheckDate#</cfoutput></h1>
</cfif>

<cfdump var="#cfhttp#">

I just use the cfhttpparam tag to send the If-Modified-Since value. Again you need to format your date with GetHttpTimeString()

The date I supplied in this example is one week ago. You can remove the DateAdd, and just use Now() to check and see if the file has been modified.

Some servers may reject a date that is greater than their server time, so keep that in mind when testing.


Like this? Follow me ↯

If-Modified-Since and CFML Part II was first published on February 18, 2005.

If you like reading about cfml, if-modified-since, or rss then you might also like:

FuseGuard Web App Firewall for ColdFusion

The FuseGuard Web Application Firewall for ColdFusion & CFML is a high performance, customizable engine that blocks various attacks against your ColdFusion applications.

Comments

Pete: This must be my night to be a pain in the butt. :)

In terms of RSS, you should generally avoid (read: almost never) send an If-Modified-Since that isn't derived from a Last-Modified you've previously received from the target server. Doing otherwise will lead to highly unpredictable results.
by Roger Benningfield on 02/20/2005 at 4:14:55 AM UTC