Мне нужно узнать о браузерах и о том, как они отправляют даты в заголовках HTTP. Меня беспокоит, что я не смогу выполнить сравнение строк, если у пользователя другой браузер или локализация.
В настоящее время у меня есть что-то вроде этого кода для обработки запросов:
DateTime dt = getLastModified(someResourceHandle);
if(Request.Headers["If-Modified-Since"] == dt.ToString("R")/*RFC1123*/) {
// return HTTP 304 (Not Modified)
} else {
getFullResource(someResourceHandle);
}
Цель: я не хочу, чтобы он сломался.
Итак, я проверил заголовки запросов из пары браузеров:
Когда я использую IE с английским языком в качестве языка:
Accept-Language: en-us
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT
Когда я использую IE с французским (Бельгия) в качестве моего языка (я бы ожидал «март» вместо «вт»):
Accept-Language: fr-be
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT
Несмотря ни на что, я получаю это от Firefox:
Accept-Language: en-us,en;q=0.5
If-Modified-Since: Tue, 30 Jun 2009 15:52:19 GMT
Это выглядит хорошо для меня, так как кажется, что все даты используют английские сокращения и единый формат (RFC 1123), но я не уверен, что это верно для всех основных браузеров и для всех глобализации и операционных систем (у меня есть доступ только для тестирования на компьютере с Windows).
Я делаю это правильно?