REST的cookie路径在IE中失败而没有尾随斜杠

时间:2010-01-28 17:07:18

标签: javascript internet-explorer cookies path rest

我被要求在包含没有斜杠(.NET MVC)的RESTful URL的页面上构建选项卡式部分,例如http://myhost/books/the-amber-spyglass

为了使标签部分更加用户友好,我希望他们记住当用户四处移动时在每个页面上打开哪个标签,这样如果他们返回到书籍,他们之前在同一个标​​签上仍然打开。这是通过设置名为“tab”的cookie来实现的,其中值设置为tabid,路径设置为它们所在的页面(因此它不会影响其他页面上的选项卡)。到目前为止,你认为是非常基本的东西,它确实也很好用。

输入Internet Explorer。

在IE中,它显示了一个带有路径/书籍/琥珀色 - 望远镜的cookie与上述URL不匹配,因此无法正确设置。如果我添加一个尾部斜杠,所以路径是/ books / the-amber-spyglass /而不是它工作正常 - 但我不能改变我们的URL模式,即使我可以“琥珀 - 望远镜”是一种资源,而不是夹。

有没有人有一个推荐的解决方案,这肯定是非常常见的问题?

非常感谢,

JS

1 个答案:

答案 0 :(得分:9)

请参阅http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx

  

由于一个不起眼的错误   底层的WinINET InternetGetCookie   实施,IE的document.cookie   如果已设置,则不会返回cookie   路径属性包含   文件名。

     

例如,如果页面设置了cookie   就像这样:

     

设置Cookie:   HTTPSet-PathCookie = PASS;路径= / check.htm

     

... cookie将与HTTP一起发送   请求但不会出现在   document.cookie collection。