fix: missing content-type for directory listing index & error pages
Diff
src/error_page.rs | 7 ++++++-
src/handler.rs | 10 +++++-----
src/static_files.rs | 5 +++++
3 files changed, 16 insertions(+), 6 deletions(-)
@@ -1,4 +1,5 @@
use headers::{AcceptRanges, ContentLength, ContentType, HeaderMapExt};
use headers::{AcceptRanges, ContentLength, ContentType, HeaderMapExt, HeaderValue};
use http::header::CONTENT_TYPE;
use hyper::{Body, Method, Response, StatusCode};
use once_cell::sync::OnceCell;
@@ -89,6 +90,10 @@ pub fn error_response(method: &Method, status_code: &StatusCode) -> Result<Respo
let mut resp = Response::new(body);
*resp.status_mut() = *status_code;
resp.headers_mut().insert(
CONTENT_TYPE,
HeaderValue::from_static("text/html; charset=utf-8"),
);
resp.headers_mut().typed_insert(ContentLength(len));
resp.headers_mut().typed_insert(ContentType::html());
resp.headers_mut().typed_insert(AcceptRanges::bytes());
@@ -50,11 +50,6 @@ impl RequestHandler {
match static_files::handle(method, headers, root_dir, uri_path, dir_listing).await {
Ok(mut resp) => {
if self.opts.security_headers {
security_headers::append_headers(&mut resp);
}
if self.opts.compression {
resp = compression::auto(method, headers, resp)?;
@@ -64,6 +59,11 @@ impl RequestHandler {
let ext = uri_path.to_lowercase();
control_headers::append_headers(&ext, &mut resp);
if self.opts.security_headers {
security_headers::append_headers(&mut resp);
}
Ok(resp)
}
Err(status) => error_page::error_response(method, &status),
@@ -8,6 +8,7 @@ use headers::{
AcceptRanges, ContentLength, ContentRange, ContentType, HeaderMap, HeaderMapExt, HeaderValue,
IfModifiedSince, IfRange, IfUnmodifiedSince, LastModified, Range,
};
use http::header::CONTENT_TYPE;
use humansize::{file_size_opts, FileSize};
use hyper::{Body, Method, Response, StatusCode};
use percent_encoding::percent_decode_str;
@@ -239,6 +240,10 @@ async fn read_directory_entries(
);
let mut resp = Response::new(Body::empty());
resp.headers_mut().insert(
CONTENT_TYPE,
HeaderValue::from_static("text/html; charset=utf-8"),
);
resp.headers_mut()
.typed_insert(ContentLength(page_str.len() as u64));