куки не работают с клиентом Angularjs, но работают с почтальоном через .net core WebAPI - PullRequest
0 голосов
/ 07 января 2019

У меня есть клиент AngularJS, связанный с ASP.net Core WebAPI (через CORS). Я сохраняю значение в cookie и передаю его с сервера на клиент. Кажется, клиент не сохраняет этот cookie, потому что при последующих запросах я не могу найти этот cookie. enter image description here

Подобный сценарий работает нормально в Почтальоне. Я вижу Cookies (1) в Почтальон enter image description here ASP.NET Core WebAPI

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    ... //other configs goes here
    var corsBuilder = new CorsPolicyBuilder();
        corsBuilder.AllowAnyHeader();
        corsBuilder.AllowAnyMethod();
        corsBuilder.AllowAnyOrigin();
        corsBuilder.AllowCredentials();
        services.AddCors(options =>
        {
            options.AddPolicy("TestCorsPolicy", corsBuilder.Build());
        });
        services.Configure<MvcOptions>(options =>
        {
            options.Filters.Add(new CorsAuthorizationFilterFactory("TestCorsPolicy"));
        });
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    var cookiePolicyOptions = new CookiePolicyOptions
        {
            Secure = CookieSecurePolicy.SameAsRequest,
            MinimumSameSitePolicy = SameSiteMode.None
        };
        app.UseCors("TestCorsPolicy");            
        app.UseAuthentication();
        app.UseCookiePolicy(cookiePolicyOptions); 
        app.UseHttpsRedirection();
        app.UseMvc();
}

Cache Set / Get

HttpContext.Response.Cookies.Append("Key", "-11701", option);  //Set
HttpContext.Request.Cookies["Key"]; //Get

Угловой JS

this.PostApi = function (rowEntity, apiRoute) {
        var def = $q.defer();
        return $http.post(
            apiRoute,
            JSON.stringify(rowEntity),                
            {
                withCredentials: true, // Provided this as well based on another Stackoverflow post
                headers: {
                    'Content-Type': 'application/json',
                    'Authorization': 'Bearer ' + getLocalStorageItem("Token")//getLocalStorage("Token"),
                }
            }).then(
                function (response) {
                    def.resolve(response);
                    return def.promise;
                },
                function (error) {
                    // translate the error
                    if (error.status == "401") {
                        window.location.href = defaults.sessionExpiredURL;
                        def.reject(error);
                        return def.promise;
                    } else {
                        def.reject(error);
                        return def.promise;
                    }
                });
    }

Я должен быть в состоянии увидеть значение cookie в WebAPI, и это должно быть через запрос от клиента Angular JS, который не происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...