程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iframe,跨域cookie,p3p策略和safari出现错误:未提供必需的防伪令牌或该令牌无效大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决iframe,跨域cookie,p3p策略和safari出现错误:未提供必需的防伪令牌或该令牌无效?

开发过程中遇到iframe,跨域cookie,p3p策略和safari出现错误:未提供必需的防伪令牌或该令牌无效的问题如何解决?下面主要结合日常开发的经验,给出你关于iframe,跨域cookie,p3p策略和safari出现错误:未提供必需的防伪令牌或该令牌无效的解决方法建议,希望对你解决iframe,跨域cookie,p3p策略和safari出现错误:未提供必需的防伪令牌或该令牌无效有所启发或帮助; | 不久前,我问了这个问题,发现除非您设置p3p策略,否则IE会阻止iframe中的跨域cookie。到目前为止,p3p修复在IE中运行良好。但是,现在我们在野生动物园中遇到了相同的错误。 我发现了一篇关于Safari的p3p政策不同的文章。我添加了此代码来设置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标头永远不会出现这些错误。我不确定这是设计使然还是该问题继续存在的指示。     

解决方法

问题是,除非用户与该iframe进行交互,否则Safari不允许在iframe中设置Cookie。对于某些人来说,这意味着单击链接。我找到了一个更好的解决方案,那就是重定向。 首先,我将此表格放在页面上。实际上,我将其放在iframe中服务的每个视图所使用的母版页中。
<% if(SecurityHelper.browserIsSafari) { %>
    <% using (Html.beginForm(\"SafariRedirect\",\"Framed\",FormMethod.Post,new { id=\"safari-fix-form\" })) { %>
       <%: Html.Hidden(\"safariRedirectUrl\")%>
    <% } %>
<% } %>
因为我只希望此功能在用户使用野生动物园时起作用,所以我在静态帮助器类中创建了此属性以检查useragent
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被设置,并且用户将被重定向回相同的网址。     

大佬总结

以上是大佬教程为你收集整理的iframe,跨域cookie,p3p策略和safari出现错误:未提供必需的防伪令牌或该令牌无效全部内容,希望文章能够帮你解决iframe,跨域cookie,p3p策略和safari出现错误:未提供必需的防伪令牌或该令牌无效所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。