mirror of
https://github.com/django/django.git
synced 2025-10-17 22:07:29 +00:00
Fixed #24834 -- Fixed get_current_site() when Host header contains port.
When the Host header contains a port, looking up the Site record fails as the host will never match the domain.
This commit is contained in:
parent
7f1168e387
commit
b3d5dc6932
5 changed files with 72 additions and 9 deletions
|
@ -495,10 +495,23 @@ Finally, to avoid repetitive fallback code, the framework provides a
|
|||
A function that checks if ``django.contrib.sites`` is installed and
|
||||
returns either the current :class:`~django.contrib.sites.models.Site`
|
||||
object or a :class:`~django.contrib.sites.requests.RequestSite` object
|
||||
based on the request.
|
||||
based on the request. It looks up the current site based on
|
||||
:meth:`request.get_host() <django.http.HttpRequest.get_host>` if the
|
||||
:setting:`SITE_ID` setting is not defined.
|
||||
|
||||
Both a domain and a port may be returned by :meth:`request.get_host()
|
||||
<django.http.HttpRequest.get_host>` when the Host header has a port
|
||||
explicitly specified, e.g. ``example.com:80``. In such cases, if the
|
||||
lookup fails because the host does not match a record in the database,
|
||||
the port is stripped and the lookup is retried with the domain part
|
||||
only. This does not apply to
|
||||
:class:`~django.contrib.sites.requests.RequestSite` which will always
|
||||
use the unmodified host.
|
||||
|
||||
.. versionchanged:: 1.8
|
||||
|
||||
This function will now lookup the current site based on
|
||||
:meth:`request.get_host() <django.http.HttpRequest.get_host>` if the
|
||||
:setting:`SITE_ID` setting is not defined.
|
||||
Looking up the current site based on ``request.get_host()`` was added.
|
||||
|
||||
.. versionchanged:: 1.9
|
||||
|
||||
Retrying the lookup with the port stripped was added.
|
||||
|
|
|
@ -208,7 +208,11 @@ Minor features
|
|||
:mod:`django.contrib.sites`
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
* ...
|
||||
* :func:`~django.contrib.sites.shortcuts.get_current_site` now handles the case
|
||||
where ``request.get_host()`` returns ``domain:port``, e.g.
|
||||
``example.com:80``. If the lookup fails because the host does not match a
|
||||
record in the database and the host has a port, the port is stripped and the
|
||||
lookup is retried with the domain part only.
|
||||
|
||||
:mod:`django.contrib.staticfiles`
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue