Załóżmy, że otrzymałem obiekt z usługi internetowej REST, a ten obiekt ma znacznik czasu. Ten znacznik czasu ma składnik milisekundy. Następnym razem, gdy zażądam tego samego obiektu, nie chcę, aby został on zwrócony, chyba że się zmienił, więc używam nagłówka If-Modified-Since. Ale data w tym nagłówku nie powinna mieć nawet milisekund. Jeśli zaokrągliję znacznik czasu, zawsze otrzymam obiekt z powrotem, tak jakby zawsze był modyfikowany. Jeśli go zaostrzę, ryzykuję brak aktualizacji. Czy nagłówek If-Modified-Since jest dla mnie zupełnie bezużyteczny w tym przypadku, czy coś mi brakuje?HTTP If-Modified-Since z milisekundami
6
A
Odpowiedz
9
Usługa wysyłająca sygnaturę z milisekundami nie jest zgodna z protokołem HTTP. Last-Modified
MUSI być wysłana jako HTTP daty który §3.3.1 określa bardzo wyraźnie:
HTTP-date = rfc1123-date | rfc850-date | asctime-date rfc1123-date = wkday "," SP date1 SP time SP "GMT" rfc850-date = weekday "," SP date2 SP time SP "GMT" asctime-date = wkday SP date3 SP time SP 4DIGIT date1 = 2DIGIT SP month SP 4DIGIT ; day month year (e.g., 02 Jun 1982) date2 = 2DIGIT "-" month "-" 2DIGIT ; day-month-year (e.g., 02-Jun-82) date3 = month SP (2DIGIT | (SP 1DIGIT)) ; month day (e.g., Jun 2) time = 2DIGIT ":" 2DIGIT ":" 2DIGIT ; 00:00:00 - 23:59:59 wkday = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun" weekday = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday" | "Sunday" month = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec"
pliku bug z usługi, której używasz. Nie można wysłać Last-Modified
lub If-Modified-Since
z milisekundami.
Jeśli ważność pod sekunda jest ważna, bardziej odpowiednie może być użycie entity tags (ETag
).
Otrzymany znacznik czasu nie nadchodzi jako nagłówek Last-Modified, jest własnością obiektu. Chciałem odesłać go za pomocą If-Modified-Since. –
@JoeShmo: Odpowiedź zawiera. 'If-Modified-Since' MUSI też być * datą HTTP * (co oznacza, że nie możesz wysłać milisekund), a usługa, z której korzystasz, musi ją obsługiwać. Nie wiedząc więcej o danej usłudze, trudno powiedzieć o wiele więcej. – josh3736