Como posso compartilhar cookies entre ColdFusion e JavaScript?

Compartilhar cookies entre ColdFusion e JavaScript é uma forma fácil de passar dados entre as duas tecnologias. Um cookie é um cookie independentemente de se foi definido pelo ColdFusion, Java, .net, ou JavaScript. Desde que voce saiba o nome do cookie (e em alguma situações sua caixa – maiúsculo/minúsculo) voce pode acessar e manipular o cookie. Dito isto, o maior truque em compartilhar cookies entre ColdFusion e JavaScript é lembrar-se que ColdFusion ignora a caixa (case insensitive), mas JavaScript não (case sensitive). Usar um cookie JavaScript em ColdFusion não importa a caixa, mas usar um cookie ColdFusion em JavaScript voce deve se referenciar ao nomde do cookie todo em letras maiúsculas (all caps).

O código a seguir está dividido em duas páginas. A primeira página define dois cookies. O primeiro cookie é definido via JavaScript, e o segundo via ColdFusion. A segunda página então usa ColdFusion e JavaScript para exibir o conteúdo dos cookies que foram definidos pela outra linguagem:

<!--- Page1.cfm --->
<script language=javaScript>
     <!--
     //This function will set a JavaScript cookie 
     function setCookie(name, value) {
          //build an expiration time 1 hour into the future    
          var expDate = new Date();
          expDate.setTime(ExpDate.getTime() + 60*60*1000);
          //set the cookie 
          document.cookie = name + "=" + escape(value) + 
               ";" + expDate.toGMTString();
     }
     setCookie('jSCookie', 'JavaScript!');
     // --> 
</script>
<cfcookie name="cFCookie" value="ColdFusion!" expires="never">

<!--- Page2.cfm --->
<script language=javaScript>
     <!--
     // This function will return the value of a JavaScript cookie 
     function getCookie(name) {
          //init output var output = null;
          //apend ; to end so we can calculate end of cookie text 
          var myCookie = " " + document.cookie + ";";
          //append = to cookie name so any additional text is the cookie value 
          var search = " " + name + "=";
          // init search start location 
          var begin = myCookie.indexOf(search);
          //init search end location 
          var end;
          //loop over cookie text and pull out the value we want 
          if (begin != -1) {
               begin += search.length;
               end = myCookie.indexOf(";", begin);
               output = unescape(myCookie.substring(begin, end));
          }
          return output;
     }
     alert(getCookie('CFCOOKIE'));
     // --> 
</script>
<cfoutput>#cookie.jSCookie#</cfoutput>

by Jeremy Petersen

Leave a comment