2

これに関連するいくつかの質問があることを私は理解しています。しかし、私はこれを機能させるために夢中になっています。簡単に言えば、私は当社のサーバー上に存在する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内に設定されません。

何か案は?

4

1 に答える 1

0

多くの検討とさまざまなブラウザとの戦いの後、当社は最終的に、データベースベースのセッションを使用することを支持してCookieを破棄することを決定しました。iframeでサイトをホストしているサードパーティのWebサイトを扱っているため、これで問題は完全に解決されます。

うまくいけば、これが他の人の助けになるでしょう-iframeでCookieを使用するクリーンな方法はありません。

于 2013-05-23T13:33:31.440 に答える