У меня есть клиент AngularJS, связанный с ASP.net Core WebAPI (через CORS). Я сохраняю значение в cookie и передаю его с сервера на клиент. Кажется, клиент не сохраняет этот cookie, потому что при последующих запросах я не могу найти этот cookie.
Подобный сценарий работает нормально в Почтальоне. Я вижу Cookies (1) в Почтальон
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, который не происходит.