/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
URLEncode
Fra : Rune Jensen


Dato : 25-10-09 10:22

Er der noget med, at URLEncode ikke virker med UTF-8, og at man derfor
skal tage højde for dette, hvis man vil URLEncoode? Jeg tænkte via
ACCEPT i serverVariables.

F.eks.

Noget a la

if instr( request.serverVariables("ACCEPT"), "utf-8")<1 then URIQuery =
server.URLEncode( URIQuery)

Grunden er, jeg får længere og længere query, når jeg URLEncoder ved
redirect (testsite - ændres løbende, men her er et eksempel
http://webdesigngruppen.dk/designteknik/www_ikke_www.asp?rune%25253Djensen%25252520petersen)


Hvis jeg ikke URLEncoder, så kommer querystring fint igennem??!?


MVH
Rune Jensen

 
 
Stig Johansen (25-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 25-10-09 13:15

Rune Jensen wrote:

> Er der noget med, at URLEncode ikke virker med UTF-8, og at man derfor
> skal tage højde for dette, hvis man vil URLEncoode?

Det må du lave nogle forsøg med, afhængig af hvad du vil.

Ifølge standarden:
<http://tools.ietf.org/html/rfc3986>
_skal_ URL encoding foretages på baggrund af utf-8.

Om en 'vis herre' eller ASP gør dette ved jeg ikke på stående fod, men det
må være ligetil at lave en test med f.eks. Response.Write
Server.Urlencode("ÆØÅæøå").

> Grunden er, jeg får længere og længere query, når jeg URLEncoder ved
> redirect (testsite - ændres løbende, men her er et eksempel
>
http://webdesigngruppen.dk/designteknik/www_ikke_www.asp?rune%25253Djensen%25252520petersen)

Hvis du encoder dobbelt, så bliver % til %25 og %25 til %2525 osv..

--
Med venlig hilsen
Stig Johansen

Rune Jensen (25-10-2009)
Kommentar
Fra : Rune Jensen


Dato : 25-10-09 14:26

Stig Johansen skrev:
> Rune Jensen wrote:
>
>> Er der noget med, at URLEncode ikke virker med UTF-8, og at man derfor
>> skal tage højde for dette, hvis man vil URLEncoode?
>
> Det må du lave nogle forsøg med, afhængig af hvad du vil.
>
> Ifølge standarden:
> <http://tools.ietf.org/html/rfc3986>
> _skal_ URL encoding foretages på baggrund af utf-8.

OK, det er nyttig viden senere. Lige nu, forstår jeg det ikke helt.


> Om en 'vis herre' eller ASP gør dette ved jeg ikke på stående fod, men det
> må være ligetil at lave en test med f.eks. Response.Write
> Server.Urlencode("ÆØÅæøå").

Hos mig giver det nøjagtigt dette output:
%C6%D8%C5%E6%F8%E5

Men det er jo ASP-kode fyret af inde i dokumentet. Jeg ved ikke, om det
har betydning, at koden ligger i en ISO 8859-1 .txt-fil.

Kan det tænkes, at visse browsere selv laver en URLencoding, inden det
overhovedet når igennem scriptet (det dér redirect script)? Og at det er
årsagen til dobbeltkonfekten?


>> Grunden er, jeg får længere og længere query, når jeg URLEncoder ved
>> redirect (testsite - ændres løbende, men her er et eksempel
>>
> http://webdesigngruppen.dk/designteknik/www_ikke_www.asp?rune%25253Djensen%25252520petersen)
>
> Hvis du encoder dobbelt, så bliver % til %25 og %25 til %2525 osv..

Klart nok.

Kan bare ikke se, hvor problemet opstår i første omgang, som gør det
blivder dobbelt. Men jeg laver nogle flere test-forsøg.


MVH
Rune Jensen

Rune Jensen (25-10-2009)
Kommentar
Fra : Rune Jensen


Dato : 25-10-09 15:20

Rune Jensen skrev:

>> Om en 'vis herre' eller ASP gør dette ved jeg ikke på stående fod, men
>> det
>> må være ligetil at lave en test med f.eks. Response.Write
>> Server.Urlencode("ÆØÅæøå").
>
> Hos mig giver det nøjagtigt dette output:
> %C6%D8%C5%E6%F8%E5
>
> Men det er jo ASP-kode fyret af inde i dokumentet. Jeg ved ikke, om det
> har betydning, at koden ligger i en ISO 8859-1 .txt-fil.
>
> Kan det tænkes, at visse browsere selv laver en URLencoding, inden det
> overhovedet når igennem scriptet (det dér redirect script)? Og at det er
> årsagen til dobbeltkonfekten?

Jeg fandt:
http://stackoverflow.com/questions/614781/utf-8-server-urlencode-problem-in-asp-classic

....men det giver en mulig årsag (som jeg ikke forstår), ikke løsningen.


MVH
Rune Jensen

Stig Johansen (25-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 25-10-09 18:16

Rune Jensen wrote:

>> Om en 'vis herre' eller ASP gør dette ved jeg ikke på stående fod, men
>> det må være ligetil at lave en test med f.eks. Response.Write
>> Server.Urlencode("ÆØÅæøå").
>
> Hos mig giver det nøjagtigt dette output:
> %C6%D8%C5%E6%F8%E5

Det er egentlig forkert, da det er iso-8859-1, men det er nok bedst ikke at
røre ved det hvis det er internt.

Men hvis du får behov for at encode i utf-8, tror jeg at jeg kan finde en
ASP stump, der laver AntiToUTF8

> Kan det tænkes, at visse browsere selv laver en URLencoding, inden det
> overhovedet når igennem scriptet (det dér redirect script)? Og at det er
> årsagen til dobbeltkonfekten?

Muligvis, men det må testes.

>> Hvis du encoder dobbelt, så bliver % til %25 og %25 til %2525 osv..
>
> Klart nok.
>
> Kan bare ikke se, hvor problemet opstår i første omgang, som gør det
> blivder dobbelt. Men jeg laver nogle flere test-forsøg.

Det kan også tænkes, at URIQuery slet ikke er decoded.
Hvis det ikke er decoded, bliver det encoded dobbelt ved hver redirect,
måske er det det.

Jeg kan muligvis genkende noget af oprindelsen, men jeg ikke han har testet
ret meget ;)

Hov, jeg har da lige mit testprogram, prøver lige:
<http://w-o-p-r.dk/tips/asp/aspinfo.asp?teststring=%C6%D8%C5%E6%F8%E5>
Jo, den er god nok - den er dårlig.

Som du kan se, er den rå query string ikke decoded, så den skal bare bruges
råt uden server.urlencode.

Dekodningen sker åbenbart i Request.Querystring, hvor du kan se der står
ÆØÅæøå

--
Med venlig hilsen
Stig Johansen

Rune Jensen (25-10-2009)
Kommentar
Fra : Rune Jensen


Dato : 25-10-09 19:46

Stig Johansen skrev:

> Hov, jeg har da lige mit testprogram, prøver lige:
> <http://w-o-p-r.dk/tips/asp/aspinfo.asp?teststring=%C6%D8%C5%E6%F8%E5>
> Jo, den er god nok - den er dårlig.
>
> Som du kan se, er den rå query string ikke decoded, så den skal bare bruges
> råt uden server.urlencode.
>
> Dekodningen sker åbenbart i Request.Querystring, hvor du kan se der står
> ÆØÅæøå

Det giver samme resultat i Opera, FF, Chrome, IE8 samt K-meleon (som jeg
fik ned ved et tilfælde). Så det har du ret i.

To sprgsmål:

1: Jeg kan bedre lide + end %20. Og de er ens, ikk? Så man kan bare lave
en replace af de to?

2: Skal jeg være bekymret over cross-site-scripting/andet knald ved
redirects via addheader? Eller er det kun ved response.redirect?
http://msdn.microsoft.com/en-us/library/ms524309.aspx

....der foreslås iøvrigt en HTMLEncode i stedet for en URLEncode. Det er
formentlig til & -> &amp;

Jeg forsøger..



MVH
Rune Jensen

Rune Jensen (25-10-2009)
Kommentar
Fra : Rune Jensen


Dato : 25-10-09 20:02

Rune Jensen skrev:
> Stig Johansen skrev:

>> Dekodningen sker åbenbart i Request.Querystring, hvor du kan se der står
>> ÆØÅæøå
>
> Det giver samme resultat i Opera, FF, Chrome, IE8 samt K-meleon (som jeg
> fik ned ved et tilfælde). Så det har du ret i.
>
> To sprgsmål:

Et tredje:

Hvad med HTTPS og redirects? Jeg ved, det må være noget med øget
sikkerhed, så kan man bare bruge samme princip, tilføje et s og så samme
metode ellers som med HTTP?

Hvad med et tjek af servervariables("HTTPS") - er det nok at tjekke for
on/off dér?

Det er ikke noget, som haster, mere sådan et sideprojekt, jeg kigger på,
ind i mellem.


MVH
Rune Jensen

Stig Johansen (26-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 26-10-09 10:21

Rune Jensen wrote:

> ...der foreslås iøvrigt en HTMLEncode i stedet for en URLEncode. Det er
> formentlig til & -> &amp;

HTMLEncode og URLEncode er to forskellige ting, som skal bruger dér hvor det
skal bruges.

De har faktisk intet med hinanden at gøre.

--
Med venlig hilsen
Stig Johansen

Rune Jensen (26-10-2009)
Kommentar
Fra : Rune Jensen


Dato : 26-10-09 20:40

Stig Johansen skrev:
> Rune Jensen wrote:
>
>> ...der foreslås iøvrigt en HTMLEncode i stedet for en URLEncode. Det er
>> formentlig til & -> &amp;
>
> HTMLEncode og URLEncode er to forskellige ting, som skal bruger dér hvor det
> skal bruges.
>
> De har faktisk intet med hinanden at gøre.

Sandeligen. Og en test afslører, at du har ret.

Jeg har problemer med nyhedsgruppeserveren hos Cirque i øjeblikket, det
er hammerlangsomt, og jeg gider ikke rigtigt bøvle med det. Men jeg
skulle alligevel i seng, så ikke mere aktivitet herfra før i morgen.

Tak for svaret i øvrigt.


MVH
Rune Jensen

Stig Johansen (27-10-2009)
Kommentar
Fra : Stig Johansen


Dato : 27-10-09 12:02

Rune Jensen wrote:

> Stig Johansen skrev:
>> Rune Jensen wrote:
>>
>>> ...der foreslås iøvrigt en HTMLEncode i stedet for en URLEncode. Det er
>>> formentlig til & -> &amp;
>>
>> HTMLEncode og URLEncode er to forskellige ting, som skal bruger dér hvor
>> det skal bruges.
>>
>> De har faktisk intet med hinanden at gøre.
>
> Sandeligen. Og en test afslører, at du har ret.

Du tænker nok specielt på & vs. &amp;

En URI med værdier, eller en POST med samme har formen name=value pairs,
hvor f.eks.
name1=value1&name2=Value2.. osv.

Her skal browseren sende et &-tegn, og ikke et &amp;.

Af hensyn til validator, og browserens fortolkning, sender man det som:
name1=value1&amp;name2=Value2.. osv.

Browseren 'HTMLdecoder' så &amp; og betragter det som et &-tegn, og sender
det videre.

--
Med venlig hilsen
Stig Johansen

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste