主屏幕Web应用程序中的iOS 11 cookie过期

时间:2017-10-03 19:28:47

标签: cookies ios11

iOS 11似乎存在问题(iOS 11.0.1仍然存在问题),主屏幕网络应用和Cookie。从服务器设置cookie时,iOS 11似乎会间歇性地删除cookie。其他时候,当服务器到期cookie时,iOS 11似乎间歇性地无法删除cookie。这两种行为发生在关闭并重新打开主屏幕Web应用程序之后,并且似乎在Safari中无法重现。这些行为似乎也不会出现在iOS 10或iOS 9中。

我猜这是iOS 11中的一个错误,但是想知道是否有其他人遇到过这个问题,并且已经想出如何解决它。

例如,此ASP.NET代码在登录和注销时创建并过期cookie。当索引URL添加到主屏幕,并且在登录或注销后关闭并重新打开应用程序(即,重新加载索引URL)时,应用程序有时会在重新加载时显示为错误状态(已记录登录后退出,或者在退出后仍然登录)。


    public class HomeController : Controller
    {        
        [Route("~/")]
        public ActionResult Index()
        {
            var loginCookie = Request.Cookies["Login"];

            if (loginCookie != null)
            {
                return View();
            }
            else
            {
                return Redirect("Login");
            }
        }

        [Route("~/login/")]
        public ActionResult Login()
        {
            return View();
        }

        [HttpPost]
        [Route("~/login/")]
        public ActionResult LoginComplete()
        {
            var authCookie = new HttpCookie("Login", "login token")
            {
                Expires = DateTime.Now.AddMinutes(20)
            };

            Response.Cookies.Add(authCookie);

            return Redirect("~/");
        }

        [Route("~/logout/")]
        public ActionResult Logout()
        {
            var authCookie = new HttpCookie("Login", "login token")
            {
                Expires = DateTime.Now.AddMinutes(-1000)              
            };

            Response.Cookies.Add(authCookie);

            return View();
        }
    }

Here is the full repo如果有人想尝试重现这个问题。请记住,这是一个间歇性问题,可能需要多次尝试。

0 个答案:

没有答案