1

我在 domain1.com 上有两个网站 domain1.com 和 domain2.com 我有一个通用处理程序,它将编写一个响应,告诉用户是否通过以下方式进行身份验证:

string json = "{\"status\":\"" + HttpContext.Current.User.Identity.IsAuthenticated + "\"}";
HttpContext.Response.Clear();
HttpContext.Response.ContentType = "application/jsonp"
HttpContext.Response.Write(json);

现在,如果我使用浏览器查看通用处理程序一切正常,如果用户已登录,它将返回“status”:“true”,否则返回“status”:“false”

当我使用 $.get() 从 domain2.com 向这个 generichandler 发送请求时,问题就开始了,无论用户是否登录,结果都将始终为“status”:“false”。这是因为有一些什么样的跨域违规?这个实在看不懂,求大神指点,谢谢。

4

1 回答 1

1

当您使用 ASP.NET 表单身份验证时,会为该域创建一个 ASPXAUTH cookie。

Cookie 随每个请求一起发送,因此 ASP.NET 将查找 ASPXAUTH cookie(在 domain2.com 中不存在)并确定用户未通过身份验证。

您可能需要研究适合您需求的跨域 SSO 解决方案。看看这里: http: //www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic

于 2013-06-16T04:27:12.923 回答