Я пытаюсь построить ECommerce с MVC5 с помощью следующих инструментов: - Visual Studio 2017, Oracle БД 11g, Entity Framework 6, NET Framework 4.6.2, я использую https с пустотой сертификат на тестирование. Я создаю свои собственные куки-файлы внутри приложения, чтобы сохранить выбор пользователя и избранные элементы, я добавляю элементы вручную, удаляя повар ie и помещая новый обновленный после каждого элемента, добавленного или удаленного клиентом, когда-либо все в порядке Firefox, но при попытке просмотреть приложение из Chrome я получил следующее сообщение:
Повар ie, связанный с ресурсом в http://localhost/ был установлен с SameSite=None
, но без Secure
. Он был заблокирован, так как Chrome теперь доставляет файлы cookie, помеченные SameSite=None
, только если они также помечены Secure
.
Вот мой кулинар создания ie код:
public HttpCookie CookieWareFromBrowser ()
{
var ItemsCart = HttpContext.Current.Request.Cookies.Get(Models.StaticModels.CookiesManagedStrings.ItemsCart);
if (ItemsCart==null)
{
HttpCookie _ItemsCart = new HttpCookie(Models.StaticModels.CookiesManagedStrings.ItemsCart);
_ItemsCart.Values.Add(Models.StaticModels.CookiesManagedStrings.Items, "|");
_ItemsCart.Values.Add(Models.StaticModels.CookiesManagedStrings.ItemsCount, "0");
_ItemsCart.Expires = System.DateTime.Now.AddDays(1);
HttpContext.Current.Request.Cookies.Set(_ItemsCart);
HttpContext.Current.Response.SetCookie(_ItemsCart);
HttpContext.Current.Response.Flush();
return _ItemsCart;
}
ItemsCart.Expires = System.DateTime.Now.AddDays(1);
return ItemsCart;
}
Добавление товара для приготовления ie код:
public IHttpActionResult AddItemToCart(CartItem cartItem)
{
var _cookie = new CookiesMaster().CookieWareFromBrowser();
var Cookieitems = CookiesManagedStrings.decryptingCooki(_cookie.Values[CookiesManagedStrings.Items]);
if (string.IsNullOrEmpty(Cookieitems.Split('|').SingleOrDefault(s => s.Contains(cartItem.Id.ToString()))))
_cookie.Values[CookiesManagedStrings.Items] = CookiesManagedStrings.encryptingCooki(Cookieitems + cartItem.Id + "," + cartItem.ProductName.Replace(",", "") + "," + cartItem.IValue + "," + cartItem.Quantity + "|");
else
{
var item = Cookieitems.Split('|').Where(s => !string.IsNullOrEmpty(s)).SingleOrDefault(si => si.Contains(cartItem.Id.ToString()));
var oldQty = int.Parse(item.Substring(item.LastIndexOf(',') + 1));
var productbalance = _context.storage.Single(p => p.id== cartItem.Id && p.M_LOCATOR_ID == M_ProductManagedStrings.ID).FREE_BALANCE;
if (productbalance >= oldQty + cartItem.Quantity)
{
var newItem = item.Substring(0, item.LastIndexOf(',') + 1) + (oldQty +cartItem.Quantity);
Cookieitems = string.Join("|", Cookieitems.Split('|').Select(s => s.Replace(item, newItem)));
_cookie.Values[CookiesManagedStrings.Items] = CookiesManagedStrings.encryptingCooki(Cookieitems);
}
else return BadRequest("Item Qty Exceeds Balance");
}
int x = 0;
var v = CookiesManagedStrings.decryptingCooki(_cookie.Values[CookiesManagedStrings.ItemsCount]);
if (int.TryParse(v, out x))
{
_cookie.Values[CookiesManagedStrings.ItemsCount] = CookiesManagedStrings.encryptingCooki((int.Parse(v) + 1).ToString());
}
else
{
_cookie.Values[CookiesManagedStrings.ItemsCount] = CookiesManagedStrings.encryptingCooki(0.ToString());
}
HttpContext.Current.Response.Cookies.Remove(CookiesManagedStrings.ItemsCart);
HttpContext.Current.Response.Cookies.Add(_cookie);
HttpContext.Current.Response.Cookies.Set(_cookie);
return Ok(_cookie.Values[CookiesManagedStrings.ItemsCount]);
}