Heim >Web-Frontend >HTML-Tutorial >Die Safari-Cookie-Einstellung ist auf Chinesisch fehlgeschlagen

Die Safari-Cookie-Einstellung ist auf Chinesisch fehlgeschlagen

WBOY
WBOYOriginal
2016-08-04 08:53:141298Durchsuche

Da es sich um ein Windows-Betriebssystem handelt, wurde der Test direkt im Chrome-Browser und anschließend auf dem Android-Gerät durchgeführt, um die Entwicklung und das Debuggen zu erleichtern. Als die Funktion im Wesentlichen abgeschlossen war, wurde sie ursprünglich auf dem Android-Gerät getestet. Bei der Ausführung unter iOS traten jedoch viele seltsame Probleme auf. Bei der Untersuchung wurde festgestellt, dass die relevanten Informationen nicht abgerufen werden konnten weil das Cookie keinen Wert hatte.

Zuerst dachte ich, dass es ein Problem mit verstümmelten chinesischen Zeichen im Cookie sei. Später habe ich festgestellt, dass der Wert des Cookies überhaupt nicht erfolgreich zugewiesen wurde. Ich habe die Informationen online überprüft und festgestellt, dass dies bei Safari nicht der Fall ist Nicht-ASCII-codierte Werte zulassen. Mit anderen Worten: Chinesische Speicherung ist nicht zulässig.

Um dieses Problem zu lösen, muss der Cookie-Wert zuerst codiert und dann decodiert werden, wenn der Wert erhalten wird.

Das Back-End verwendet asp.net, um Cookies zu setzen, und das Front-End verwendet Javascript, um Cookies abzurufen. Können ihre Codierung und Decodierung konsistent sein? Momentan kann ich es nur ausprobieren:

Ich habe mehrere Methoden ausprobiert und festgestellt, dass die Codierung mit HttpUtility.UrlEncode():

erfolgreich war
<span style="color: #008080;">1</span>  cookie = <span style="color: #0000ff;">new</span> HttpCookie(<span style="color: #800000;">"</span><span style="color: #800000;">rdname</span><span style="color: #800000;">"</span><span style="color: #000000;">);
</span><span style="color: #008080;">2</span>  cookie.Value =<span style="color: #000000;"> HttpUtility.UrlEncode(user.RegisterDeptName);
</span><span style="color: #008080;">3</span>  cookie.Expires = System.DateTime.Now.AddDays(<span style="color: #800080;">30</span><span style="color: #000000;">);
</span><span style="color: #008080;">4</span>  context.Response.Cookies.Set(cookie);

Clientseitiges Javascript wird wie folgt dekodiert:

<span style="color: #008080;">1</span> <span style="color: #0000ff;">var</span> deptName = cookie('<span style="color: #800000;">rdname</span>'<span style="color: #000000;">);
</span><span style="color: #008080;">2</span> deptName=<span style="color: #000000;"> decodeURIComponent(deptName);
</span><span style="color: #008080;">3</span> $("#pickerlb").val(deptName);

Das heißt: decodeURIComponent() in Javascript und C#s HttpUtility.UrlEncode() sind gepaart.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn