Safari iFrame cookie问题

时间:2012-12-27 16:42:56

标签: asp.net-mvc-3 iframe safari

我意识到有几个与此相关的问题;然而,我一直在疯狂尝试做这项工作。简而言之,我有一个MVC3应用程序,它存在于我们公司的服务器上,它在客户端URL的iFrame中提供。所有其他浏览器都非常好用,对于Safari来说,默认情况下开启了“没有第三方cookie”的设置。

所以这就是我到目前为止所尝试的内容(我们有自定义库,因此其中一些函数特定于我们的东西):

查看:

@if ((HttpContext.Current.Request.UserAgent.ToLower().IndexOf("safari") >= 0) && HttpContext.Current.Request.Cookies["safari_cookie_set"] == null)
{
  using (Html.BeginRouteFormSSL(RouteNames.SafariRedirect, FormMethod.Post, new { id = "safari-fix-form" }))
  {   <input type="submit" value="Go!" /> }
}

控制器:

[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult SafariRedirect()
{
  ActionResult result = null;

  Response.Cookies.Add(new HttpCookie("safari_cookie_set", "cookie ok"));
  result = RedirectToRouteNoSSL(Index);

  return result;
}

使用Javascript:

safariValidate: function(){
  if ($.browser.safari == true && document.cookie.indexOf("safari_cookie_set") == -1){
          $("#safari-fix-form").submit();
      }
}

所以最初,前提是使用javascript(因此是.submit())自动发布到iframe。它似乎工作了一天左右。现在,我发布的方式并不重要(注意这里的输入按钮......),不会在iframe中设置cookie。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

经过深思熟虑和不同浏览器的斗争后,我们公司最终决定放弃cookie,转而使用基于数据库的会话。这完全解决了这个问题,因为我们正在处理在iframe中托管我们网站的第三方网站。

希望这会对其他人有所帮助 - 在iframe中没有干净的方法来使用cookie。