これに関連するいくつかの質問があることを私は理解しています。しかし、私はこれを機能させるために夢中になっています。簡単に言えば、私は当社のサーバー上に存在するMVC3アプリケーションを持っており、それはクライアントのURLのiFrameで提供されます。Safariのexecptは、デフォルトで「サードパーティの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に自動的に投稿することでした。それは1日かそこらでうまくいったようでした。さて、私がどのように投稿するかは関係ありません(ここの入力ボタンに注意してください...)、Cookieはiframe内に設定されません。
何か案は?