mirror of
https://github.com/searxng/searxng.git
synced 2026-05-09 02:43:52 +02:00
87e4c476216ab25206b4e583b4206e762c3b9fe0
The `url_for` function in the template context is not the one from Flask, it is
the one from `webapp`. The `webapp.url_for_theme` is different from its
namesake of Flask and has it quirks, when called with argument `_external=True`.
The `webapp.url_for_theme` can't handle absolute URLs since it pokes a leading
'/', here is the snippet of the old code::
url = url_for(endpoint, **values)
if settings['server']['base_url']:
if url.startswith('/'):
url = url[1:]
url = urljoin(settings['server']['base_url'], url)
Next drawback of (Flask's) `_external=True` is, that it will not return the HTTP
scheme when searx (the Flask app) listens on http and is proxied by a https
server.
To get the right scheme `HTTP_X_SCHEME` is needed by Flask (werkzeug). Since
this is not provided in every environment (e.g. behind Apache mod_wsgi or the
HTTP header is not fully set for some other reasons) it is recommended to
get *script_name*, *server* and *scheme* from the configured `base_url`. If
`base_url` is specified, then these values from are given preference over any
Flask's generics.
BTW this patch normalize to use `url_for` in the `opensearch.xml` and drop the
need of `host` and `urljoin` in template's context.
Signed-off-by: Markus Heiser <markus@darmarit.de>
.. SPDX-License-Identifier: AGPL-3.0-or-later .. figure:: https://raw.githubusercontent.com/searx/searx/master/searx/static/themes/oscar/img/logo_searx_a.png :target: https://searx.github.io/searx/ :alt: searX :width: 100% :align: center ------- |searx install| |searx homepage| |searx wiki| |AGPL License| |Issues| |commits| |OpenCollective searx backers| |OpenCollective searx sponsors| Privacy-respecting, hackable `metasearch engine`_ / *pronunciation* **səːks**. .. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine .. |searx install| image:: https://img.shields.io/badge/-install-blue :target: https://searx.github.io/searx/admin/installation.html .. |searx homepage| image:: https://img.shields.io/badge/-homepage-blue :target: https://searx.github.io/searx .. |searx wiki| image:: https://img.shields.io/badge/-wiki-blue :target: https://github.com/searx/searx/wiki .. |AGPL License| image:: https://img.shields.io/badge/license-AGPL-blue.svg :target: https://github.com/searx/searx/blob/master/LICENSE .. |Issues| image:: https://img.shields.io/github/issues/searx/searx?color=yellow&label=issues :target: https://github.com/searx/searx/issues .. |PR| image:: https://img.shields.io/github/issues-pr-raw/searx/searx?color=yellow&label=PR :target: https://github.com/searx/searx/pulls .. |commits| image:: https://img.shields.io/github/commit-activity/y/searx/searx?color=yellow&label=commits :target: https://github.com/searx/searx/commits/master .. |OpenCollective searx backers| image:: https://opencollective.com/searx/backers/badge.svg :target: https://opencollective.com/searx#backer .. |OpenCollective searx sponsors| image:: https://opencollective.com/searx/sponsors/badge.svg :target: https://opencollective.com/searx#sponsor If you are looking for running instances, ready to use, then visit searx.space_. Otherwise jump to the user_, admin_ and developer_ handbooks you will find on our homepage_. .. _searx.space: https://searx.space .. _user: https://searx.github.io/searx/user .. _admin: https://searx.github.io/searx/admin .. _developer: https://searx.github.io/searx/dev .. _homepage: https://searx.github.io/searx contact: openhub_ // twitter_ // IRC: #searx @ freenode .. _openhub: https://www.openhub.net/p/searx .. _twitter: https://twitter.com/Searx_engine ------- |gluten free| .. |gluten free| image:: https://forthebadge.com/images/featured/featured-gluten-free.svg
Languages
Python
80.8%
Shell
6.4%
HTML
5.4%
Less
4.1%
TypeScript
2.9%
Other
0.3%