使用jquery+;jsonp、Internet explorer isn';t保存ASP.NET会话ID

使用jquery+;jsonp、Internet explorer isn';t保存ASP.NET会话ID,asp.net,jquery,jsonp,Asp.net,Jquery,Jsonp,所以我使用Jquery做了一些相当简单的JSONP工作 总体结构 站点位于域A Javascript存在于域B JSON服务也存在于域B 该站点调用jsonp调用json服务(.net)的方法,在.net中我设置会话并返回 这一切都很好,除了在IE中,它没有在后续请求中存储或传递会话id。。所以.net每次都会创建一个新的 如果我直接访问JSON url,即愉快地存储它,并在后续调用中使用它 Firefox和chrome在这方面没有任何问题,但出于某种原因,IE似乎通过jquery忽略了会话

所以我使用Jquery做了一些相当简单的JSONP工作

总体结构

  • 站点位于域A
  • Javascript存在于域B
  • JSON服务也存在于域B
该站点调用jsonp调用json服务(.net)的方法,在.net中我设置会话并返回

这一切都很好,除了在IE中,它没有在后续请求中存储或传递会话id。。所以.net每次都会创建一个新的

如果我直接访问JSON url,即愉快地存储它,并在后续调用中使用它


Firefox和chrome在这方面没有任何问题,但出于某种原因,IE似乎通过jquery忽略了会话cookie,但除此之外,响应工作正常。

许多浏览器对同源策略的限制比Firefox更严格。这不是IE的问题。XHR/MSXML对象不接受cookie


与firefox相比,许多浏览器对同源策略的限制更大。这不是IE的问题。XHR/MSXML对象不接受cookie


由于您的站点、js和服务位于不同的域中,我怀疑IE正在进行一些XSS保护,在这种情况下,这会损害无害的、有意的跨域调用。如果是这样的话,在每个用户的计算机上使用这种方法可能会非常困难-您是否可以选择一种不同的方法,它不需要服务的这一特定部分的会话cookie?当然,我可以在json响应中输入某种会话id,然后手动处理它,不过我很惊讶,因为它似乎是一个直接的“setcookie”命令:ASP.NET_SessionId=l3vw0a45xnvwzibeki4y0j55;路径=/;HttpOnlyWell,当然我可以在json响应中放入某种会话id,然后手动处理它,但我很惊讶,因为它似乎是一个直接的“set cookie”命令:
set cookie:ASP.NET_SessionId=L3VW00A45xNVWZIbeki4Y0J55;路径=/;httponlyi如果我是你,我会研究IIS中XSS保护的细节,看看这是否真的是你出现问题的原因(这也可能是你对json的ajax请求…),然后再开始讨论很多事情。嗯,我不认为是IIS,使用fiddler我可以清楚地看到设置的cookie头,由于你的站点、js和服务位于不同的域中,我怀疑IE在做一些XSS保护,在这种情况下,这会损害一个无害的、有意的跨域调用。如果是这样的话,在每个用户的计算机上使用这种方法可能会非常困难-您是否可以选择一种不同的方法,它不需要服务的这一特定部分的会话cookie?当然,我可以在json响应中输入某种会话id,然后手动处理它,不过我很惊讶,因为它似乎是一个直接的“setcookie”命令:ASP.NET_SessionId=l3vw0a45xnvwzibeki4y0j55;路径=/;HttpOnlyWell,当然我可以在json响应中放入某种会话id,然后手动处理它,但我很惊讶,因为它似乎是一个直接的“set cookie”命令:
set cookie:ASP.NET_SessionId=L3VW00A45xNVWZIbeki4Y0J55;路径=/;httponlyi如果我是你,我会研究IIS中XSS保护的细节,看看这是否真的是你出现问题的原因(这也可能是你对json的ajax请求…),然后再开始讨论很多事情。嗯,我不认为是IIS,使用fiddler我可以清楚地看到设置的cookie头,然后我就不把它寄回去了。