मेरे पास दो ऐप सेवाएं हैं, एक कोणीय ऐप है और दूसरा .NET कोर 2.0 ऐप है। मैं बाद वाले से एंटीफोर्गरी टोकन बनाता हूं और प्रत्येक अनुरोध के लिए एक शीर्षलेख से संलग्न करता हूं, ताकि इसे पूर्व में कुकी के रूप में सेट किया जा सके।

स्टार्टअप.सीएस

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors();
        services.AddAntiforgery(options =>
        {
            options.HeaderName = "X-XSRF-TOKEN";
            options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
            options.Cookie.HttpOnly = false;
            options.Cookie.SameSite = SameSiteMode.None;

        });
        ...

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseCookiePolicy(new CookiePolicyOptions
        {
            MinimumSameSitePolicy = SameSiteMode.None
        });

        app.UseAntiforgeryTokenMiddleware("X-XSRF-TOKEN");
        ....

AntiForgeryMiddleware.cs

    public async Task Invoke(HttpContext context, IAntiforgery antiforgery, ILogger<AntiForgeryMiddleware> logger)
    {
        string path = context.Request.Path.Value;
        if (path != null && path.ToLower().Contains("/api/account/authorizeview"))
        {
            if (httpVerbs.Contains(context.Request.Method, StringComparer.OrdinalIgnoreCase))
            {
                var tokens = antiforgery.GetAndStoreTokens(context);

                context.Response.Cookies.Append(requestTokenCookieName, tokens.RequestToken, new CookieOptions()
                {
                    HttpOnly = false, 
                    Secure = true
                });
            } 
        }
        context.Response.Headers.Add("Access-Control-Allow-Credentials", "true");

        await next.Invoke(context);
    }

कोणीय ऐप में withCredentials: true सेट है। यह लोकलहोस्ट में काम करता है लेकिन जब एज़ूर कुकीज़ पर तैनात किया जाता है तो क्रोम में सेट नहीं किया जाता है। माइक्रोसॉफ्ट एज में, कुकीज़ को प्रतिक्रिया में स्क्रीनशॉट के रूप में प्रदर्शित किया जाता है लेकिन एप्लिकेशन स्टोरेज में नहीं।

enter image description here

2
Uthpala Pathirana 12 पद 2018, 08:22

1 उत्तर

सबसे बढ़िया उत्तर

हम उप-डोमेन से कुकीज़ तक नहीं पहुंच सकते जहां शीर्ष डोमेन azurewebsites.net है क्योंकि यह सार्वजनिक उपसर्ग सूची में सूचीबद्ध है।

अधिक जानकारी : ASP.NET5, MVC 6 कुकीज नहीं साइटों पर साझा किया गया

1
Uthpala Pathirana 14 पद 2018, 13:56