Override URLSessionFormat

I received an interesting challenge today from my boss.

We recently switched from requiring people to be logged into the site to read our articles to being open, and only requiring logins to comment. Because of the previous restriction and a large amount of our audience being corporate users with cookies disabled, we have URLSessionFormat wrapping all of our internal links spread out over a few template pages, over a few of our sites. Now that we don’t have to be as careful about checking logins it would be better to make sure all of our urls are cleaner (i.e. not having the session information appended to it). My boss wanted to avoid having to edit all of those files. So that challenge to me was to figure out how to override c and make sure our urls were clean.

After fiddling with getPageContext to no avail I settled on this solution:

  • Grab the page content in Application.cfc:onRequest()
  • Replace any reference to the jsessionid in the page.
  • Output the page as intended

<cffunction
name=“onRequest”
output=“TRUE”
access=“public”
>
   <cfargument
name=“thePage”
type=“string”
required=“true”>
      <cfset

var pageContent = “”>
      <cfset
var token = “;jsessionid=#session.sessionid#”>

      <cfsavecontent
variable=“pageContent”>
         <cfinclude

template=“#arguments.thePage#”>
      </cfsavecontent>

   <cfset pageContent = Replace(pageContent, token, “”, “ALL”) />

   <cfoutput>#pageContent#</cfoutput>

</cffunction>

It’s not bad, and it doesn’t add a tremendous amount of overhead to every page, and would have worked if this was imperative to do. We decided however that string processing every single request was probably not preferable to just finding and replacing all of the URLSessionFormat() references.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s