Wednesday, March 23, 2005

JavaScript URL encoding with Apostrophe

[This was originally posted at http://timstall.dotnetdevelopersjournal.com/javascript_url_encoding_with_apostrophe.htm]

In a previous post I discussed using HttpUtility.UrlEncode to encode querystrings. While this is a great start, we can extend our encoding abilities using JavaScript's escape and unescape methods.

Sometime you'll need to encode at the client side, such as passing data to and from a pop-up window using querystrings (solely a client activity). While escape is very similar to HttpUtility.UrlEncode, there are some slight differences. Escape will encode both the apostrophe (%27) and space (%20 instead of '+').

The problem is that sometimes the security filter on the Web Server won't even allow the escaped chars. They won't allow apostrophe, but they won't allow %27 either. An easy way to test the allowed URL characters on a development site is to just append a dummy querystring, such as www.mySite.com?url=. Depending on the security system installed, you may get an error like "Inline Html scripts are not allowed in URLS for security purposes."

One solution is to take advantage of the safe '*' character. You could first encode the string, and then replace all '%' with '*'. This would give you the safe sequence %*27 instead of  ' or %27. We could then synchronize our server side encoding functions to match this pattern to allow us to freely pass encoded data between the client and server. Below is the HTML for a page to demonstrate this. It contains a encode and decode textbox and button. The buttons call their respective functions to encode/decode the data and store it in the other textbox.

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
 <HTML
>
     <HEAD
>
         <title>Encodetitle
>
         <meta name="GENERATOR" Content
="Microsoft Visual Studio .NET 7.1">
         <meta name="CODE_LANGUAGE" Content
="C#">
         <meta name="vs_defaultClientScript" content
="JavaScript">
         <meta name="vs_targetSchema"
             content
="http://schemas.microsoft.com/intellisense/ie5">
         <script language
="javascript">
            

         script
>
     HEAD
>
     <body MS_POSITIONING
="FlowLayout">
         <form id="Form1" method="post" runat
="server">
             <P>Encoding TestP
>
             <P><INPUT id="TxtEncode" type="text" name="TxtEncode">
             <INPUT id="BtnEncode" title="Encode"
                     onclick
="DoEncode(document.Form1.TxtEncode.value)"
                     type="button" value="Encode" name="BtnEncode">
             <INPUT id="TxtResult" type="text" name
="TxtResult">
             <INPUT id="BtnDecode" onclick="DoDecode(document.Form1.TxtResult.value)"
                     type="button" value="Decode" name="BtnDecode">P
>
         form
>
     body
>
 HTML>

We can encode our data between client and server by combining JavaScript's escape and unescape methods, HttpUtility's UrlEncode and UrlDecode methods, and taking advantage that '*' isn't encoded in either.

5 comments:

  1. https://www.facebook.com/bantalsilikongrosir
    http://bantalsilikon01.blogspot.com/2014/12/a.html
    http://jualsangkarpleci.blogspot.com/2014/12/a.html
    http://kopiluwakliar01.blogspot.com/2014/12/a.html
    http://vvty.in/uncategorized/marinir-seo/

    http://marinirseo.blogspot.com/2014/12/a.html
    http://marinir-seo.blogspot.com/2014/12/a.html
    http://bumbu-pecel-malang.blogspot.com/2014/12/a.html
    http://distro-seo.blogspot.com/2014/12/a.html
    http://restoran-seo.blogspot.com/2014/12/a.html
    http://bantalmalangmurah.blogspot.com/2014/12/a.html
    http://distrobantal.blogspot.com/2014/12/a.html
    http://kesethandukmalang.blogspot.com/2014/12/a.html


    http://tasya.marinirseo.web.id/?p=4http://jeannet.marinirseo.web.id/?p=4http://anne.marinirseo.web.id/?p=4http://jelita.marinirseo.web.id/?p=4http://ruth.marinirseo.web.id/?p=4http://caca.marinirseo.web.id/?p=4http://brenda.marinirseo.web.id/?p=1 || http://tasya1.marinirseo.web.id/?p=4http://jeannet1.marinirseo.web.id/?p=4http://anne1.marinirseo.web.id/?p=4http://jelita1.marinirseo.web.id/?p=4http://ruth1.marinirseo.web.id/?p=4http://caca1.marinirseo.web.id/?p=5http://brenda1.marinirseo.web.id/?p=4 || http://tasya2.marinirseo.web.id/?p=5http://jeannet2.marinirseo.web.id/?p=4http://anne2.marinirseo.web.id/?p=4http://jelita2.marinirseo.web.id/?p=4http://ruth2.marinirseo.web.id/?p=4http://caca2.marinirseo.web.id/?p=4http://brenda2.marinirseo.web.id/?p=4http://brenda3.marinirseo.web.id/?p=4http://tasya3.marinirseo.web.id/dua/http://jeannet3.marinirseo.web.id/?p=4http://anne3.marinirseo.web.id/?p=4http://jelita3.marinirseo.web.id/?p=4http://ruth3.marinirseo.web.id/?p=4http://caca3.marinirseo.web.id/?p=4 || nhttp://brenda4.marinirseo.web.id/?p=4http://tasya4.marinirseo.web.id/?p=4http://jeannet4.marinirseo.web.id/?p=4http://anne4.marinirseo.web.id/?p=4http://jelita4.marinirseo.web.id/?p=5http://ruth4.marinirseo.web.id/?p=4http://caca4.marinirseo.web.id/?p=4 || http://tasya5.marinirseo.web.id/?p=4http://anne5.marinirseo.web.id/?p=4http://jelita5.marinirseo.web.id/?p=4http://ruth5.marinirseo.web.id/?p=4http://caca5.marinirseo.web.id/?p=4http://synganne.marinirseo.web.id/?p=4
    http://tasya.marinirseo.web.id/?p=4http://jeannet.marinirseo.web.id/?p=4http://anne.marinirseo.web.id/?p=4http://jelita.marinirseo.web.id/?p=4http://ruth.marinirseo.web.id/?p=4http://caca.marinirseo.web.id/?p=4http://brenda.marinirseo.web.id/?p=1 || http://tasya1.marinirseo.web.id/?p=4http://jeannet1.marinirseo.web.id/?p=4http://anne1.marinirseo.web.id/?p=4http://jelita1.marinirseo.web.id/?p=4http://ruth1.marinirseo.web.id/?p=4http://caca1.marinirseo.web.id/?p=5http://brenda1.marinirseo.web.id/?p=4 || http://tasya2.marinirseo.web.id/?p=5http://jeannet2.marinirseo.web.id/?p=4http://anne2.marinirseo.web.id/?p=4http://jelita2.marinirseo.web.id/?p=4http://ruth2.marinirseo.web.id/?p=4http://caca2.marinirseo.web.id/?p=4http://brenda2.marinirseo.web.id/?p=4http://brenda3.marinirseo.web.id/?p=4http://tasya3.marinirseo.web.id/dua/http://jeannet3.marinirseo.web.id/?p=4http://anne3.marinirseo.web.id/?p=4http://jelita3.marinirseo.web.id/?p=4http://ruth3.marinirseo.web.id/?p=4http://caca3.marinirseo.web.id/?p=4 || nhttp://brenda4.marinirseo.web.id/?p=4http://tasya4.marinirseo.web.id/?p=4http://jeannet4.marinirseo.web.id/?p=4http://anne4.marinirseo.web.id/?p=4http://jelita4.marinirseo.web.id/?p=5http://ruth4.marinirseo.web.id/?p=4http://caca4.marinirseo.web.id/?p=4 || http://tasya5.marinirseo.web.id/?p=4http://anne5.marinirseo.web.id/?p=4http://jelita5.marinirseo.web.id/?p=4http://ruth5.marinirseo.web.id/?p=4http://caca5.marinirseo.web.id/?p=4http://synganne.marinirseo.web.id/?p=4

    ReplyDelete
  2. Permainan bandar poker terpercaya ini akan dapat memberi pada anda semuanya bonus besar yang diperlukan membernya. Bahkan juga bila anda bermain sehari-hari dalam game bandar poker terpercaya ini jadi anda pastinya juga akan dapat menjangkau yang namanya hadiah menarik bandar poker terpercaya yang juga akan dapat anda peroleh dalam game bandar poker terpercaya ini dengan mudahnya. Rasakan banyak bonus besar dalam game bandar poker terpercaya yang mengagumkan istimewa ini.
    Daftar Agen Bola Terpercaya
    Agen Judi Bola Terpercaya
    Daftar Situs Judi Online Terpercaya
    Situs Judi Bola Resmi
    Bandar Judi Bola Terbesar Di Dunia

    ReplyDelete
  3. Mencari Distributor Pipa HDPE dan Supplier Pipa HDPE lewat internet tidaklah sulit, Anda hanya perlu mengetik “Pipa HDPE” pada kolom pencarian, maka macam-macam distributor dan supplier pipa HDPE akan terpampang. Namun, apakah semua Distributor Pipa HDPE dan supplier dapat dipercaya produknya? Konveksi Baju Seragam

    ReplyDelete
  4. Dalam game agen poker online uang asli android ini banyak anggota bandar poker terpercaya yang akan memperoleh bonus besar. Hadiah yang dapat anda peroleh dalam game bandar poker terpercaya ini ada juga banyak jumlahnya. Judi Online Agen Poker Online Agen Taruhan Bola Bahkan juga service bandar poker terpercaya ini juga akan dapat memberi anda service paling baik yang diperlukan anggota yang ada didalamnya. Jadi silakan saja anda bermain dalam game bandar poker terpercaya ini agar anda dapat memperoleh kekayaan.

    ReplyDelete
  5. Jampoker ialah Agen Dewa Poker yang menyiapkan permainan terlengkap serta menarik seperti CAPSA SUSUN, KIU KICK, Domino QQ serta Agen Poker Online Ceme Terbaik. Kami sebagai Agen Sakong Online juga menyiapkan DOMINO KIU KIU , CEME Online, BLACKJACK, CAPSA SUSUN. Semua permainan online uang asli itu bisa dimainkan lewat situs kami dan gadget anda android ataupun di ios, Mainkan Semua permainan yang kami siapkan di tempat ini hanya melalui cara mendaftar.

    Jampoker menyiapkan 7 permainan yang bisa anda mainkan cukup dengan menggunakan 1 id seperti Bandar ceme atau Ceme Keliling, Q Kick, Agen Dewa Poker, Live Poker, Omaha, Super 10, Dewa Poker dan Capsa Susun. Permainan itu adalah permainan yang sangat populer pada waktu ini di bidang Judi Online. Kami yakinkan jika kami melayani anda dengan sepenuh hati dapat di lihat dari langkah kami melayani anda selama 24jam. Semua operator kami sudah melakukan pelatihan terbaik untuk melayani semua pemain poker IDN dan poker online.

    Pelatihan terbaik yang sudah dilalui tidak sekedar dalam sisi pengetahuan dalam dunia judi, akan tetapi kami sudah memberi pelatihan pada semua operator kami untuk mempunyai sopan santun dalam menyikapi semua aduan dari para member kami. Tingkat kepuasan member jadi tolak ukur kami untuk selalu meningkatkan service kami untuk melayani anda. Jampoker sebagai Agen Poker IDN terbaik siap melayani anda dalam 24 jam penuh sehari-harinya.

    ReplyDelete