Iframe, inter-domaine cookies, politique p3p, et safari avec l'erreur: Un nécessaire anti-faux jeton n'a pas été fourni ou n'était pas valide
J'ai demandé à ce question un temps, et a constaté que IE blocs inter-domaine des cookies dans une iframe, sauf si vous définissez un politique p3p.. Jusqu'à présent, le p3p correctif a travaillé magnifiquement dans ie. Cependant, maintenant, nous faisons le même message d'erreur dans safari.
J'ai trouvé un article avec un autre politique p3p. pour safari. J'ai ajouté ce code pour définir la politique p3p, mais je suis toujours obtenir une demande de vérification de jeton d'erreur.
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\"");
}
Je ne suis pas sûr de ce que tout cela signifie, mais il ne fonctionne pas pour Safari (5).
Aussi, quand je reçois une erreur du serveur, toutes les informations qui m'est envoyé dans un rapport, y compris tous les en-têtes http. L'en-tête p3p ne vient jamais par le biais de ces erreurs. Je ne sais pas si c'est voulu par la conception ou si c'est un indicateur de la question en cours.
OriginalL'auteur Josh | 2011-05-25
Vous devez vous connecter pour publier un commentaire.
Le problème est que Safari ne permet pas un cookie dans un iframe, à moins que l'utilisateur interagit avec l'iframe. Pour certains, cela signifie en cliquant sur un lien. J'ai trouvé une meilleure solution est de faire une redirection.
Tout d'abord, j'ai mis ce formulaire sur ma page. En fait, je l'ai mis dans la masterpage qui est utilisé par chaque point de vue a servi dans l'iframe.
Parce que je ne veux que cela fonctionne lorsque l'utilisateur est à l'aide de safari, j'ai créé cette propriété statique de la classe helper pour vérifier le useragent
Puis, dans mon contrôleur, j'ai l'action suivante
Dans ma masterpage, dans le header, j'ai mon script a déclaré dans le même si l'instruction qui détermine si le formulaire est rendu. Dans mon fichier de script, j'ai cette jquery
La première fois l'iframe charge une page, si c'est le safari et le cookie n'est pas défini, le formulaire est posté, le cookie, et l'utilisateur est redirigé vers la même url.
hm j'ai ajouté de la forme et de l'Action avec les cookies et mon safari dans la récursivité. document.cookie.indexOf("safari_cookie_fix") est toujours vide. Mais, en vertu d'outils de développement, je vois "cookie ok"
Je suis assez certain que l'approche ci-dessus a travaillé pour moi dans Safari 4.5. J'ai fini par le dumping des cookies bien que, en raison des paramètres de sécurité dans internet explorer peut également bloquer les cookies tiers.
Je suis sous safari 5.1.4. et pour certaines raisons, mes cookies sont vides... Pour IE, j'ai ajouté en-tête p3p et il fonctionne
Malheureusement, cette lacune semble avoir été fermé. Voir stackoverflow.com/questions/9930671/... pour plus de discussion.
OriginalL'auteur Josh