Hoi Zusammen,
ich bruchte mal wieder eine Hilfestellung - Ich bekomme in meinem Programm per HTTP folgenden Input gesendet:
[code]POST /flash/addcrypted2 HTTP/1.1
Host: 127.0.0.1:9666
Connection: keep-alive
Content-Length: 428
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Origin: http://www.google.de
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 YaBrowser/14.12.2125.10034 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://www.google.de
Accept-Encoding: gzip,deflate
Accept-Language: de,en;q=0.8
source=http://www.google.de&crypted=P8bFE38ECLf5zIf8fhIlgtCaWsNxefsMN+bF6QRho9BaKCOi66nggCTV02MiTzmPID4cGO3fYtDvIJ3PfS5nSD8hOxfam+UDKG1RnalwDnI=&jk=function+f(){+var+org+=+â43638343731333932373838373635393â;+var+dec+=+ââ;+var+i+=+0;+for(i=32;i>=0;iâ){+dec+=org.substring(i,i+1);+}+return+dec;+}&x=34&y=38[/code]
Wie man sieht enthlt dieser Input eine JavaScript Funktion, die ich ausfhren muss. Allerdings kommt es vor das manche Inhalte mit diesen + Zeichen kommen, was irgendwie am Encoding liegen muss. So ist die JS-Funktion nmlich falschâŠ
Hat jemand eine Idee was ich da falsch mache?
decode URL component. Aber schon komisch eine Funktion in der URL?
DecodeURLComponent habe ich auch schon drĂŒber gejagt, es bleiben aber die + Zeichen da. Das ist insofern interessant das ich mit einem Kollegen in Kontakt stehe, der das ganze in C# fĂŒr Windows umsetzt, da kommt die Funktion immer richtig an. Deswegen gehe ich davon aus das irgendwas falsch lĂ€uft mit dem Encoding.
Kann man denn festellen in was fĂŒr einem Encoding die Daten daher kommen? Vielleicht senden die Webseiten ja unterschiedlich.
Diese Funktion generiert nachher einen SchlĂŒssel mit dem man cryped auslesen kann, das ist das ClickânâLoad Protokoll das ich gerade in Xojo nachbaue.
Also scheinbar hat UrlDecodeComponent ein Decoding ProblemâŠ
in VB sieht das ganze nachdem UrlDecode so aus:
[code]Vor dem UrlDecode:
source=http%3A%2F%2Ftest.de%2Fview.php%3Fid% 3De9782fe84ca2c47b3d4c0b0a88acb4&crypted=X0ZrQ%2Bc Hn4lJSRE5N1h7yCC1w64PhdDN10uN5cLPTyJeZEsfF3yn9jH1O 2ZGVs03XIKeAQxeEhztBZe90k9i5AUx%2BpygLbDtNNibdKty6 2c%3D&jk=function+f%28%29%7B+var+org+%3D+%27532383 63139393333323630313038333%27%3B+var+dec+%3D+%27%2 7%3B+var+i+%3D+0%3B+for%28i%3D32%3Bi%3E%3D0%3Biâ%29%7B+dec%2B%3Dorg.substring%28i%2Ci%2B1%29%3B+%7 D+return+dec%3B+%7D&x=46&y=43
Vor nach dem UrlDecode:
source=http://www.test.de/view.php?id=e9782fe84ca2c47b3d4c0b0a88acb4&crypted =X0ZrQ+cHn4lJSRE5N1h7yCC1w64PhdDN10uN5cLPTyJeZEsfF 3yn9jH1O2ZGVs03XIKeAQxeEhztBZe90k9i5AUx+pygLbDtNNi bdKty62c=&jk=function f(){ var org = â53238363139393333323630313038333â; var dec = ââ; var i = 0; for(i=32;i>=0;iâ){ dec+=org.substring(i,i+1); } return dec; }&x=36&y=29[/code]
Ich frage mich nun wie ich da weiter vorgehen sollâŠ
@Christian Schmitz
GET/POST sind als âapplication/x-www-form-urlencodedâ und benutzen â+â als Leerzeichen statt %20. Tjoa und das Problem ist nun das DecodeURLComponent scheinbar damit nicht umgehen kann, in VB funktioniert das wohl Problemlos. Das dumme ist nun das ich nicht einfach + mit " " ersetzen kann, da diese Java-Funktionen halt eben auch ein + enthalten könnenâŠ
Problem ist gelöst, UrlDecodeComponent macht nicht ganz was man davon erwartet. Gelöst durch eine andere FunktionâŠ
[code] Protected Function URLDecode(s as String) As String
Dim TempAns As String
Dim CurChr As Integer
CurChr = 1
Do Until CurChr - 1 = Len(s)
Select Case Mid(s, CurChr, 1)
Case â+â
TempAns = TempAns + " "
Case â%â
TempAns = TempAns + Chr(Val("&h" + Mid(s, CurChr + 1, 2)))
CurChr = CurChr + 2
Case Else
TempAns = TempAns + Mid(s, CurChr, 1)
End Select
CurChr = CurChr + 1
Loop
return TempAns
End Function
[/code]