kopia lustrzana https://github.com/simonw/datasette
request.url now respects force_https_urls, closes #781
rodzic
40885ef24e
commit
7bb30c1f11
|
@ -786,6 +786,13 @@ class DatasetteRouter(AsgiRouter):
|
|||
base_url = self.ds.config("base_url")
|
||||
if base_url != "/" and path.startswith(base_url):
|
||||
path = "/" + path[len(base_url) :]
|
||||
# Apply force_https_urls, if set
|
||||
if (
|
||||
self.ds.config("force_https_urls")
|
||||
and scope["type"] == "http"
|
||||
and scope.get("scheme") != "https"
|
||||
):
|
||||
scope = dict(scope, scheme="https")
|
||||
return await super().route_path(scope, receive, send, path)
|
||||
|
||||
async def handle_404(self, scope, receive, send, exception=None):
|
||||
|
|
|
@ -46,6 +46,9 @@ def render_cell(value, database):
|
|||
|
||||
@hookimpl
|
||||
def extra_template_vars(template, database, table, view_name, request, datasette):
|
||||
# This helps unit tests that want to run assertions against the request object:
|
||||
datasette._last_request = request
|
||||
|
||||
async def query_database(sql):
|
||||
first_db = list(datasette.databases.keys())[0]
|
||||
return (await datasette.execute(first_db, sql)).rows[0][0]
|
||||
|
|
|
@ -1676,6 +1676,10 @@ def test_config_force_https_urls():
|
|||
"toggle_url"
|
||||
].startswith("https://")
|
||||
assert response.json["suggested_facets"][0]["toggle_url"].startswith("https://")
|
||||
# Also confirm that request.url and request.scheme are set correctly
|
||||
response = client.get("/")
|
||||
assert client.ds._last_request.url.startswith("https://")
|
||||
assert client.ds._last_request.scheme == "https"
|
||||
|
||||
|
||||
def test_infinity_returned_as_null(app_client):
|
||||
|
|
Ładowanie…
Reference in New Issue