2
我意識到有幾個問題與此有關;但是我一直在瘋狂地嘗試做這項工作。簡而言之,我有一個駐留在公司服務器上的MVC3應用程序,它在客戶端URL上的iFrame中提供。對於其他所有瀏覽器,所有這一切都很好,對Safari瀏覽器執行操作,該瀏覽器默認打開整個「無第三方Cookie」設置。Safari iFrame 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自動發佈到iframe(因此.submit())。這似乎工作了一天左右。現在,我如何發佈(注意輸入按鈕在這裏)並不重要,cookie不會在iframe中設置。
任何想法?
如何在iframe內的頁面請求間持續保持會話? – bennick
這是兩年前創建/完成的,但如果我沒有記錯,我們會傳遞一個會話GUID並始終將其包含在模型庫中。這樣,無論你來自哪裏,GUID都可以使用,但這也是由於內存泄漏。 – brenton