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.
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.
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>