Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Override Last-Modified header in web.FileResponse #5545

Open
ykvch opened this issue Mar 16, 2021 · 0 comments
Open

Override Last-Modified header in web.FileResponse #5545

ykvch opened this issue Mar 16, 2021 · 0 comments

Comments

@ykvch
Copy link

ykvch commented Mar 16, 2021

🐣 Is your feature request related to a problem? Please describe.
web.FileResponse currently does not allow overriding "Last-Modified" header via last_modified attribute (while parent web.StreamResponse allows it).
FileResponse instead always sets actual file mtime even if last_modified attribute has been set before.

💡 Describe the solution you'd like
Change line: https://github.com/aio-libs/aiohttp/blob/master/aiohttp/web_fileresponse.py#L148 to:

    if self.last_modified is None:
        self.last_modified = st.st_mtime

So that self.last_modified does not get reset by prepare() method if it has been set explicitly.

Describe alternatives you've considered
Also considered setting header directly via headers={"Last-Modified": ...} but it doesn't work (obviously it is not the correct way).

📋 Additional context

In order to also mimic "Last-Modified" removal (like in web.StreamResponse) extra steps are required:

  • Insert empty last_modified header in init: self._headers[hdrs.LAST_MODIFIED] = None
  • Extend check to see if it has been explicitly removed (same line 148):
    if self.last_modified is None and hdrs.LAST_MODIFIED in self._headers:
        self.last_modified = st.st_mtime
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant