Warum ist das %2B string urldecoded?

[Dies ist vielleicht nicht gerade ein Programmier-Frage, aber es ist ein Rätsel, dass kann man am besten beantworten, indem Programmierer. Ich versuchte es zuerst auf die Pro-Webmaster-Website, um die überwältigende Stille]

Haben wir eine E-Mail-Adresse überprüfung auf unserer website. Die Website generiert zunächst ein passender Schlüssel als string

mykey

Es dann kodiert, der Schlüssel als eine Reihe von bytes

&$dac~ʌ����!

Es dann base64-kodiert werden, dass einige bytes

JiRkYWN+yoyIhIQ==

Da dieser Schlüssel wird als querystring-Wert einer URL in einer HTML-E-Mail, müssen wir zuerst URLEncode es dann HTMLEncode das Ergebnis, was uns (es gibt keine Wirkung von HTMLEncoding in der Beispiel-Fall, aber ich kann nicht belästigt werden, zu überarbeiten. B.)

JiRkYWN%2ByoyIhIQ%3D%3D

Dies ist dann eingebettet in HTML-Code, der gesendet wird, als Teil einer E-Mail, so etwas wie:

click <a href="http://myapp/verify?key=JiRkYWN%2ByoyIhIQ%3D%3D">here</a>. 
Or paste <b>http://myapp/verify?key=JiRkYWN%2ByoyIhIQ%3D%3D</b> into your browser.

Wenn der empfangende Benutzer auf den link klickt, wird die Website die Anforderung empfängt, extrahiert den Wert der querystring-Parameter 'key' - parameter, base64-dekodiert, entschlüsselt es und macht die entsprechende Sache in Bezug auf die Website-Logik.

Jedoch gelegentlich haben wir Benutzer, die berichten, dass Ihre klicken ist unwirksam. Ein solcher Benutzer weitergeleitet, die uns die E-Mail, die er geschickt worden war, und auf die Inspektion des HTML hatte, verwandelt wurde (um es in Bezug auf das Beispiel oben)

click <a href="http://myapp/verify?key=JiRkYWN+yoyIhIQ%3D%3D">here</a>
Or paste <b>http://myapp/verify?key=JiRkYWN+yoyIhIQ%3D%3D</b> into your browser.

Ist, die %2B " string - aber keiner von den anderen Prozentsatz-kodierte strings - wurde umgewandelt in ein plus. (Es ist definitiv verlassen uns mit den richtigen Werten - ich habe die entsprechenden SMTP-Protokolle).

key=JiRkYWN%2ByoyIhIQ%3D%3D
key=JiRkYWN+yoyIhIQ%3D%3D

So, ich denke, es gibt ein paar Möglichkeiten:

  1. Gibt es etwas, was ich mache, ist blöd, dass ich nicht sehen kann, oder

  2. Einige mail-clients konvertieren %2b-Saiten, plus-Zeichen, vielleicht, um zu versuchen zu bewältigen mit dem problem von Menschen, die fälschlicherweise URLEncoding plus-Zeichen

Im Falle von 1 - was ist das? Im Fall von 2 - gibt es einen standard, bekannt Umgang mit dieser Art von Szenario?

Vielen Dank für jede Hilfe

InformationsquelleAutor Yellowfog | 2013-09-06

Schreibe einen Kommentar