It is possible to create arbitrary error pages for responses 
generated when a http_reply term is thrown. Currently this is only 
supported for status 403 (authentication required). To do this, 
instead of throwing http_reply(authorise(Term)) throw
http_reply(authorise(Term), [], Key), where Key 
is an arbitrary term relating to the page you want to generate. You must 
then also define a clause of the multifile predicate http:status_page_hook/3:
http_reply 
exception or the HTTP status code, i.e., the hook is called twice. New 
code should using the Term. Context is the third argument of 
the http_reply exception which was thrown, and CustomHTML is a list of 
HTML tokens. A page equivalent to the default page for 401 is generated 
by the example below.
:- multifile http:status_page_hook/3.
http:status_page_hook(authorise(Term), _Context, HTML) :-
    phrase(page([ title('401 Authorization Required')
                ],
                [ h1('Authorization Required'),
                  p(['This server could not verify that you ',
                     'are authorized to access the document ',
                     'requested.  Either you supplied the wrong ',
                     'credentials (e.g., bad password), or your ',
                     'browser doesn\'t understand how to supply ',
                     'the credentials required.'
                     ]),
                  \address
                ]),
           HTML).