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 June 04, 2020
© 2007-2019 BalaSys
Send your comments to support@balasys.hu