mirror of
https://github.com/python/cpython.git
synced 2025-07-23 19:25:40 +00:00
Patch #1417555: SimpleHTTPServer now returns Last-Modified headers.
This commit is contained in:
parent
bcd548bdb2
commit
5d076961e2
4 changed files with 21 additions and 8 deletions
|
@ -217,11 +217,16 @@ Returns the server software's version string. This is a combination
|
||||||
of the \member{server_version} and \member{sys_version} class variables.
|
of the \member{server_version} and \member{sys_version} class variables.
|
||||||
\end{methoddesc}
|
\end{methoddesc}
|
||||||
|
|
||||||
\begin{methoddesc}{date_time_string}{}
|
\begin{methoddesc}{date_time_string}{\optional{timestamp}}
|
||||||
Returns the current date and time, formatted for a message header.
|
Returns the date and time given by \var{timestamp} (which must be in the
|
||||||
|
format returned by \function{time.time()}), formatted for a message header.
|
||||||
|
If \var{timestamp} is omitted, it uses the current date and time.
|
||||||
|
|
||||||
|
The result looks like \code{'Sun, 06 Nov 1994 08:49:37 GMT'}.
|
||||||
|
\versionadded[The \var{timestamp} parameter]{2.5}
|
||||||
\end{methoddesc}
|
\end{methoddesc}
|
||||||
|
|
||||||
\begin{methoddesc}{log_data_time_string}{}
|
\begin{methoddesc}{log_date_time_string}{}
|
||||||
Returns the current date and time, formatted for logging.
|
Returns the current date and time, formatted for logging.
|
||||||
\end{methoddesc}
|
\end{methoddesc}
|
||||||
|
|
||||||
|
|
|
@ -65,13 +65,18 @@ error. Otherwise, the content type is guessed by calling the
|
||||||
\var{extensions_map} variable.
|
\var{extensions_map} variable.
|
||||||
|
|
||||||
A \code{'Content-type:'} header with the guessed content type is
|
A \code{'Content-type:'} header with the guessed content type is
|
||||||
output, followed by a blank line signifying the end of the headers,
|
output, followed by a \code{'Content-Length:'} header with the file's
|
||||||
|
size and a \code{'Last-Modified:'} header with the file's modification
|
||||||
|
time.
|
||||||
|
|
||||||
|
Then follows a blank line signifying the end of the headers,
|
||||||
and then the contents of the file are output. If the file's MIME type
|
and then the contents of the file are output. If the file's MIME type
|
||||||
starts with \code{text/} the file is opened in text mode; otherwise
|
starts with \code{text/} the file is opened in text mode; otherwise
|
||||||
binary mode is used.
|
binary mode is used.
|
||||||
|
|
||||||
For example usage, see the implementation of the \function{test()}
|
For example usage, see the implementation of the \function{test()}
|
||||||
function.
|
function.
|
||||||
|
\versionadded[The \code{'Last-Modified'} header]{2.5}
|
||||||
\end{methoddesc}
|
\end{methoddesc}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -436,10 +436,11 @@ class BaseHTTPRequestHandler(SocketServer.StreamRequestHandler):
|
||||||
"""Return the server software version string."""
|
"""Return the server software version string."""
|
||||||
return self.server_version + ' ' + self.sys_version
|
return self.server_version + ' ' + self.sys_version
|
||||||
|
|
||||||
def date_time_string(self):
|
def date_time_string(self, timestamp=None):
|
||||||
"""Return the current date and time formatted for a message header."""
|
"""Return the current date and time formatted for a message header."""
|
||||||
now = time.time()
|
if timestamp is None:
|
||||||
year, month, day, hh, mm, ss, wd, y, z = time.gmtime(now)
|
timestamp = time.time()
|
||||||
|
year, month, day, hh, mm, ss, wd, y, z = time.gmtime(timestamp)
|
||||||
s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
|
s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % (
|
||||||
self.weekdayname[wd],
|
self.weekdayname[wd],
|
||||||
day, self.monthname[month], year,
|
day, self.monthname[month], year,
|
||||||
|
|
|
@ -85,7 +85,9 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||||
return None
|
return None
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.send_header("Content-type", ctype)
|
self.send_header("Content-type", ctype)
|
||||||
self.send_header("Content-Length", str(os.fstat(f.fileno())[6]))
|
fs = os.fstat(f.fileno())
|
||||||
|
self.send_header("Content-Length", str(fs[6]))
|
||||||
|
self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
return f
|
return f
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue