RESTful cookie путь в IE не заканчивается без косой черты - PullRequest
10 голосов
/ 28 января 2010

Меня попросили создать раздел с вкладками на страницах с URL-адресами RESTful без косой черты (.NET MVC), например http://myhost/books/the-amber-spyglass

Чтобы разделы с вкладками были немного более удобными для пользователя, я хочу, чтобы они помнили, какая вкладка была открыта на каждой странице, когда пользователь перемещается, чтобы, если они вернутся в книгу, они ранее были на той же вкладке, то остаются открытыми. Это достигается путем установки файла cookie с именем «tab» со значением, установленным в tabid, и путем, указанным для страницы, на которой они находятся (таким образом, это не влияет на вкладки на других страницах). Пока что вы можете подумать о довольно простых вещах, и это тоже работает довольно хорошо.

Войдите в Internet Explorer.

В IE оказывается, что cookie с path / books / the-amber-spyglass НЕ будет соответствовать указанному выше URL и, следовательно, не будет правильно установлен. Если я добавлю косую черту, чтобы путь был / books / the-amber-spyglass /, вместо этого он работал нормально - но я не могу изменить нашу схему URL, и даже если бы я мог, «the-amber-spyglass» является ресурсом, а НЕ папка.

Есть ли у кого-нибудь рекомендуемое решение этой, безусловно, очень распространенной проблемы?

Большое спасибо заранее,

JS

1 Ответ

9 голосов
/ 30 января 2010

См. http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx

Из-за неясной ошибки в лежащий в основе WinINET InternetGetCookie реализация, IE document.cookie не вернет cookie, если он был установлен с атрибутом пути, содержащим имя файла.

Например, если страница устанавливает cookie на себе вот так:

Set-Cookie: HttpSet-PathCookie = PASS; = путь / check.htm

… куки будут отправлены с HTTP запросы, но не появятся в document.cookie collection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...