web-dev-qa-db-fra.com

Comment créer un côté client de cookie en utilisant blazor

J'ai une page de connexion qui s'éteint sur le serveur reçoit un tas de données, puis je souhaite prendre certaines de ces données et l'enregistrer dans un cookie en utilisant Blazor sur le client.

Donc, pour commencer, j'ai injecté avec succès IHTTPContexTAccessor. Et pour l'instant dans ma fonction de blazor, j'ai:

httpContextAccessor.HttpContext.Response.Cookies.Append("test", "ddd");

en débogage lorsque je frappe la ligne ci-dessus de code, des erreurs de code avec:

"Les en-têtes sont en lecture seule, la réponse a déjà commencé."

Bien sûr, je ne sauverai pas "Test" avec "DDD" dans le cookie, j'essaie juste d'obtenir un cookie pour économiser pour le moment.

9
bilpor

Si vous voulez éviter la dépendance externe du script

await jsRuntime.InvokeVoidAsync("eval", $"document.cookie = \"{cookieValue}\"")

Reste à la propriété échapper à la valeur de la cookie.

1
Etienne Charland

Vous pouvez ajouter javaScript expliqué par @Flores en _Host.cshtml à l'intérieur <script> étiqueter.

<script>
window.blazorExtensions = {

    WriteCookie: function (name, value, days) {

        var expires;
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toGMTString();
        }
        else {
            expires = "";
        }
        document.cookie = name + "=" + value + expires + "; path=/";
    }
}
</script>
0
immirza