Две вещи:
304 Код состояния
Код состояния 304 не является ошибкой, как указано здесь :
Условный запрос GET или HEAD был получен и привел бы к ответу 200 OK, если бы не тот факт, что условие оценивается как ложное.
В этом контексте оно означает, что браузер Firefox отправил (заголовок ETag
) (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) и в основном сказал: «Отправьте мне файл, только если файл был обновлен (это ETag отличается)».
Так как файл не был обновлен, facil.io ответил пустым ответом 304, указывающим, что файл не был обновлен.
В этот момент Firefox отображал файл, который он ранее кэшировал вместо повторной загрузки одних и тех же данных.
Stati c файловая служба - http_sendfile2
Согласно исходному коду facil.io , Mime- Тип будет установлен автоматически в соответствии с именем файла, нет необходимости устанавливать его вручную.
В этом контексте вы можете пропустить http_mimetype_find
в вашем on_request
обратном вызове, чтобы он мог выглядеть так:
void on_request(http_s *request) {
char *filepath = "index.html";
http_set_cookie(request, .name = "my_cookie", .name_len = 9, .value = "data",
.value_len = 4); // do you use this cookie? ot the X-Data header?
http_set_header(request, HTTP_HEADER_X_DATA, fiobj_str_new("my data", 7));
if(http_sendfile2(request, filepath, strlen(filepath), NULL, 0)) {
http_send_error(request, 404);
FIO_LOG_WARNING("Can't read file %s", filepath);
}
}