Я бы хотел немного расширить замечательный ответ @ danbrough в случае, если кто-то еще приземлится здесь: в первую очередь, если вам случится поставить детей с IResource.putChild
, его решение не будет работать напрямую, вам придетсяперезаписать IResource.getChildWithDefault
вместо IResource.getChild
.
Бывает и так, что некоторые ресурсы, защищенные с помощью HTTP BasicAuthentication
и , обслуживающие их с помощью Gzip
, немного сложнее, посколькувыше не будет работать.В этом случае вам нужно поиграть с HTTPAuthSessionWrapper
следующим образом:
class GzipAuthSessionWrapper(HTTPAuthSessionWrapper):
def getChildWithDefault(self, path, request):
child = HTTPAuthSessionWrapper.getChildWithDefault(self, path, request)
gzipChild = EncodingResourceWrapper(child, [GzipEncoderFactory()])
return gzipChild
Вам также нужно будет настроить Realm
, Checkers
и Portal
как обычно ( документация ).