URLs or sets of URLs can be easily rejected or redirected to a local mirror by modifying some attributes during request processing.
When an HTTP request is received, normative policy chains are processed
(self.request, self.request_header). Policy callbacks for certain events can be configured with the HTTP_REQ_POLICY or HTTP_HDR_POLICY directives. Any of these callbacks may change the request_url attribute, instructing the proxy to fetch a page different from the one specified by the browser. Please note that this is transparent
to the user and does not change the URL in the browser.
| Example 4.11. URL redirection in HTTP proxy |
|---|
|
This example redirects all HTTP GET requests to the 'http://www.example.com/' URL by modifying the value of the requested URL. class MyHttp(HttpProxy):
def config(self):
HttpProxy.config(self)
self.request["GET"] = (HTTP_REQ_POLICY, self.filterURL)
def filterURL(self, method, url, version):
self.request_url = "http://www.example.com/"
return HTTP_REQ_ACCEPT
|
| Example 4.12. Redirecting HTTP to HTTPS |
|---|
|
This example redirects all incoming HTTP connections to an HTTPS URL. class HttpProxyHttpsredirect(HttpProxy):
def config(self):
HttpProxy.config(self)
self.error_silent = TRUE
self.request["GET"] = (HTTP_REQ_POLICY, self.reqRedirect)
def reqRedirect(self, method, url, version):
self.error_status = 301
#self.error_info = 'HTTP/1.0 301 Moved Permanently'
self.error_headers="Location: https://%s/" % self.request_url_host
return HTTP_REQ_REJECT
|
Published on May 30, 2024
© BalaSys IT Ltd.
Send your comments to support@balasys.hu


