为什么IE11会在请求之间删除cookie?

时间:2017-06-28 11:36:45

标签: c# asp.net-mvc cookies httpcookie

我有一个C#应用程序,它使用cookie来跟踪用户身份验证(非常标准的东西)。在身份验证时,将创建一个cookie,其中包含与包含用户/身份验证信息的数据库表相关的哈希值。

在Chrome / Safari / Edge中,这非常有效:在IE11中创建了Cookie(我可以在登录确认页面的开发者工具中看到它),但是当点击内部链接时,用户会被踢回到身份验证中页面(通过ActionFilter,由于没有cookie存在),并且在查看登录表单时cookie不再存在。从Visual Studio调试时它似乎正常工作,并且在执行完全相同的登录过程时间歇性地甚至可以在实时服务器上工作。

在IE11中可能导致这种情况,但Chrome / Edge却没有? (遗憾的是,避免使用IE11是一种选择)。即使将Cookie设置为允许第一方和第三方,该站点位于“可信站点”列表中,也位于兼容性窗口中,也会发生这种情况

编辑:添加代码(减去键和值)

创建:

#needed packages
from surveygizmo import SurveyGizmo 
import json

#auth
sg = SurveyGizmo(
             api_version='v4', 
             response_type='json', 
             api_token = api_token, 
             api_token_secret = api_token_secret
            )
 #get data from your account as json (as I know json is optional) 
 answers = json.loads(sg.api.surveyresponse.list(surveyid, resultperpage=resultperpage, page=page) 

 #in answers['data'] are saved onlu responses
 list_of_answers = answers['data']

 #using loop you can get all answers on all questions 
 for answer_index in list_of_respondents:
      for question_index, question_value in enumerate(list_of_answers[answer_index])

           #SurveyGizmo data structure contains answers with labels like '[question(question_id), [option(option_id)' — that's why we need this 'if' 
           if question_value.startswith('[question'):
                print(list_of_answers[answer_index][question_value])

提取

HttpCookie cookie = new HttpCookie("AppSettings");
cookie.Values["key"] = value;
cookie.Expires = DateTime.Now.AddDays(TMSCookie.CookieValidityDays); // 365
Response.Cookies.Add(cookie);

0 个答案:

没有答案