asp.net-mvc-2 – iframe,跨域Cookie,p3p策略和safari,其中包含
发布时间:2020-12-15 22:38:46 所属栏目:asp.Net 来源:网络整理
导读:我曾经问过这个 question,发现IE阻止了iframe中的跨域cookie,除非你设置了一个 p3p policy.到目前为止,p3p修复在ie中工作得很好.但是,现在我们在safari中遇到了同样的错误. 我发现一篇有不同的p3p policy的文章用于野生动物园.我添加了这个代码来设置p3p策略
我曾经问过这个
question,发现IE阻止了iframe中的跨域cookie,除非你设置了一个
p3p policy.到目前为止,p3p修复在ie中工作得很好.但是,现在我们在safari中遇到了同样的错误.
我发现一篇有不同的p3p policy的文章用于野生动物园.我添加了这个代码来设置p3p策略,但是我仍然收到请求验证令牌错误. public static void SetP3PCompactPolicy() { HttpContext current = HttpContext.Current; if (current.Request.UserAgent.ToLower().IndexOf("safari") >= 0) HttpContext.Current.Response.AddHeader("p3p","CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA""); else HttpContext.Current.Response.AddHeader("p3p","CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT""); } 我不知道这是什么意思,但它不适用于Safari(5). 另外,当我收到服务器错误时,所有的信息都会发送到我的报告中,包括所有的HTTP标头.在这些错误中,p3p头不会出现.我不知道这是否是设计的,或者是否是问题的指标. 解决方法
问题是Safari不允许将cookie设置在iframe中,除非用户与该iframe进行交互.对于某些,这意味着点击链接.我找到一个更好的解决方案是做一个重定向.
首先,我把这个表格放在我的网页上.其实我把它放在了在iframe中提供的每个视图使用的母版页中. <% if(SecurityHelper.BrowserIsSafari) { %> <% using (Html.BeginForm("SafariRedirect","Framed",FormMethod.Post,new { id="safari-fix-form" })) { %> <%: Html.Hidden("safariRedirectUrl")%> <% } %> <% } %> 因为我只希望在用户使用safari时工作,所以我在静态帮助器类中创建了这个属性来检查用户名 public static bool BrowserIsSafari { get { return HttpContext.Current.Request.UserAgent.ToLower().IndexOf("safari") >= 0; } } 然后,在我的控制器中,我有以下操作 [HttpPost] public ActionResult SafariRedirect(string safariRedirectUrl) { Response.Cookies.Add(new HttpCookie("safari_cookie_fix","cookie ok")); return Redirect(safariRedirectUrl); } 在我的主页中,在标题中,我的脚本在同样的if语句中声明,该语句确定表单是否被呈现.在我的脚本文件中,我有这个jquery $(function () { if ($.browser.safari == true && document.cookie.indexOf("safari_cookie_fix") == -1) { var url = location.href; $('#safariRedirectUrl').val(url); $('#safari-fix-form').submit(); } }); iframe第一次加载一个页面,如果它是safari,并且没有设置cookie,则会发布表单,设置cookie,并将用户重定向回同一个url. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Ext.NET没有与ASP.NET MVC 4集成
- asp.net – NHibernate线程安全与会话
- asp.net-mvc – ModelState.IsValid不排除必需的属性
- asp.net – 如何为我的网站实现Facebook“赞”按钮
- asp.net – 如何仅发布捆绑/缩小的脚本
- 从ASP.NET应用程序直接将文件上传到Amazon S3
- 什么是最好的ASP.NET性能计数器来监视?
- ASP.NET站点架构问题
- asp.net – 无法使用PreSendRequestHeaders()覆盖IIS中的ht
- 身份验证 – 动态添加角色以授权ASP.NET 5中的控制器属性
推荐文章
站长推荐
热点阅读