【发布时间】:2015-02-09 21:52:40
【问题描述】:
早上好。我们目前在 asp.net 4.5.1 上有一个 MVC 5 应用程序,我们的目标是在移动浏览器上使用。
我们正在使用一些 ajax 调用来填充视图上的一些下拉菜单,但是由于这些 API 调用使用的是登录用户,因此服务器拒绝了来自 safari 的调用。 这在 iphone safari 上很明显,但在 iphone chrome 上没有。 控制器端是这样的
[HttpGet]
[Route("API/Account/Dependents/{idPlusType}")]
public IHttpActionResult GetUserOrDependantInfo(string idPlusType)
{
...
string loggedOnUser = User.Identity.Name;
}
这部分以 string.empty 的形式返回
我的客户端是 .get 的简单 ajax
$.ajax({
url: path,
dataType: "json",
type: "GET",
contentType: 'application/json; charset=utf-8',
success: function (d) {
-- Rest
}
}
现在提琴手显示非常相似的请求。来自 chrome 的一个得到了正确的服务。不是来自野生动物园的那个。
来自 iPhone 的 Fiddler 请求 safari
Cookie:.ASPXAUTH=0530DF01D09167C311032C3A6A258D24C20A9189FC8ACE76239016815047D4FEB5FCDDAED04E7FBCA41763388B1C655987732203CFD77D4B76C1EC3200ACCC26F61151BA77F4B6C3745C20D1D70369677814BB2A;__RequestVerificationToken_L2V6VmVyaWZ5MTIzTUhB0=Vb_TYkr-Begl4fv4JulkokhM24VFZjXjt_gHdsmz3ckfkKbBJu8YmNJcghafJ8_0Edn0Lb9SopXA7Di4fKZm6uV1AOM1;__RequestVerificationToken_L2V6VmVyaWZ5MTIzTUhBVGVzdA2=_sxROjMA7jW8PbluEKtzEOAbdJfpBDpYRWJLhwR6SDlX10UA7m7FU-6xezerP73HyqeLqrmqdYfwQfLftIhwqr5Fs0w1; ASP.NET_SessionId=dbh0kje3unlap545zeuvld31
现在 Chrome 来自同一部 iPhone。
Cookie:ASP.NET_SessionId=qgbcybtzvw2sxaa3w1yphu1z;__RequestVerificationToken_L2V6VmVyaWZ5MTIzTUhBVGVzdA2=v7ZBYrFtmg1GuuETKlIubWKr7T4Rddt1I40f9i56LzmQDI1svaw6qpk4hpuZqm_12ltrEkak9GewyhXU1rX0gQCiMvg1;__RequestVerificationToken_L2V6VmVyaWZ5MTIzTUhB0=NkM3pLoBJeYd2MTMKXwrh7dFY7uQYLGbzVN9nPy-ai7oNdmPXoxbI8Z6Xc0SGkVS3IxY-gmTTzD6m_eu2tKNjOA46jU1;.ASPXAUTH=2CBEC21CF8A3EDD3A4C6870FF4D68F16536C4CA9D87634CA4EB817589140EC85B8967C8A2F4ACAD8CF52FAAD5E4488F2210C6B75CCF55412CFA6F6ADD66323DB5072CD3622092865B214AE3626EE7A4F6BD8494B
【问题讨论】:
-
您使用哪种身份验证? Cookie 身份验证或令牌?
-
我没有确切的答案,但 Safari 因 cookie 问题而臭名昭著,所以我会开始寻找那里。
-
我们正在使用基于 cookie 的身份验证。不基于令牌。
标签: javascript asp.net asp.net-mvc asp.net-web-api safari