> El 2013-09-07 20:12, Roberto De Ioris escribió: >>> Hello, >>> >>> I have configured uWSGI in order to proxy to an http server and, >>> after >>> that, transform the response from the http server through the XSLT >>> transformation plugin. It works. The relevant config is: >>> >>> route= ^/ >>> toxslt:stylesheet=/whatever/template.xslt,content_type=text/html >>> route= ^/ proxyhttp:127.0.0.1:8002 >>> >>> With this I am able to XSLT-transform every response from the >>> 127.0.0.1:8002 server. >>> >>> The problem is that I would like to do this *only* when the response >>> is >>> a Content-type=text/html (whatever the URL is, i.e. it cannot be >>> done by >>> file extension. It must be by the Content-type header of the >>> response) >>> >>> Is there a way to apply the transformation depending on the response >>> from the server? >>> >>> I also considered using python code to setup the "transformation >>> chain" >>> on the fly as the response reaches back to the uWSGI instance, but >>> it is >>> poorly documented, I just don't know how to do it. Any idea? >>> >>> Thank you. >>> >>> Pablo. >>> >>> > > Thank you for your quick answer. > >> There is still no way to check response headers (honestly i still >> need to >> find a proper solution). Currently you can only check the HTTP >> status, >> using the error-route chain (it is a routing chain run after the >> response >> generation but before transformations) > > Is it documented? I did not see it. > > Anyway, that would be too expensive for this use case. > >> This limit is general, so even running custom code in routing handler >> does >> not solve the issue. > > Not as the most elegant and final solution, but maybe a very simple > transformation plugin that just checks for a variable or header, and > interrupts the transformation chain if matched... > > Thanks again for your help. > > Pablo. > _______________________________________________ > uWSGI mailing list > [email protected] > http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi >
Error router work in the same way as the others, the only difference is in "when" they run: https://github.com/unbit/uwsgi-docs/blob/master/Changelog-1.9.11.rst#error-routes I have just got an idea (sleeping sometime helps ;): response-header-collect = Content-Type MY_CONTENT_TYPE response-header-collect = Server THE_SERVER this will place the "tracked" headers in a request var as soon as they are received So you can do something like: error-route-if = equal:${MY_CONTENT_TYPE};text/html toxslt:stylesheet=/whatever/template.xslt,content_type=text/html implementing it would be super-easy and there will be no need to add more features to internal routing syntax -- Roberto De Ioris http://unbit.it _______________________________________________ uWSGI mailing list [email protected] http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
